以下是代码:
import re
string = "02:222222"
if re.match(r'[a-fA-F0-9]+[a-fA-F0-9]+:+[a-fA-F0-9]+[a-fA-F0-9]+$',string):
print "pass"
else:
print "fail"
上面的代码正在打印“pass”
我的预期输出应该是“失败”
以下是几个例子:
string = 00:20
expected output: pass
string = 00:202
expected ouput: fail
string = 00:2z
expected output: fail
string = 000:2
expected ouput: fail
答案 0 :(得分:5)
答案 1 :(得分:3)
请注意,regexp中的+
表示"一个或多个"。如果你想要一个确切数量的字符(例如" XX:XX"),那么你应该删除" +" -es:
r'[a-fA-F0-9][a-fA-F0-9]:[a-fA-F0-9][a-fA-F0-9]$'
或者,更好:
r'([a-fA-F0-9][a-fA-F0-9]):([a-fA-F0-9][a-fA-F0-9])$'
获取正则表达式的$1
和$2
组件。
根据this,你也可以使用:
^[a-fA-F0-9]{2}:[a-fA-F0-9]{2}$
甚至更多compact:
^[^\W_]{2}:[^\W_]{2}$
答案 2 :(得分:2)
您只需在常规快递字符串
之间删除+
即可
正则表达式中的 +
表示前面一个表达式中的一个或多个