import re
print(re.match(r'[a-zA-Z0-9]{6,}', '4fdg5Fj3') == True)
它正在打印False
但是给出的字符串是满足正则表达式的所有条件。
答案 0 :(得分:4)
None
可以返回的两种类型的对象,匹配对象和re.match()
都不等于True:
>>> importe re
>>> None == True
False
>>> re.match(r'[a-zA-Z0-9]{6,}', '4fdg5Fj3')
<_sre.SRE_Match object; span=(0, 8), match='4fdg5Fj3'>
>>> re.match(r'[a-zA-Z0-9]{6,}', '4fdg5Fj3') == True
False
请勿使用== True
。如果您需要查看匹配是否成功,请测试is not None
:
>>> re.match(r'[a-zA-Z0-9]{6,}', '4fdg5Fj3') is not None
True
>>> re.match(r'No such pattern', 'will not match') is not None
False
您几乎永远不会使用== True
或== False
。在像if
语句这样的布尔上下文中,只需删除== True
;测试布尔真值是声明的工作。对于== False
,请将not
放在前面。此外,如上所述,大多数对象不等于True
或False
;要测试truth value,只需传入对象本身,或使用bool()
函数将真值转换为布尔值。