re.fullmatch匹配异常:输入匹配模式为何返回False?如何修正?
解决re.fullmatch匹配结果判断错误的问题
你的代码问题不在于正则模式,而是对re.fullmatch的返回值判断逻辑错误:
re.fullmatch匹配成功时,返回的是一个Match对象,而非布尔值True;匹配失败时返回None。- 当你用
== True比较时,Match对象和True并不相等,所以条件始终不成立,导致输出"NO"。
修改方法
直接判断re.fullmatch的返回值是否为非空(Python中Match对象在布尔上下文会被视为True,None视为False),去掉== True即可:
import re pattern = '[A-Z0-9a-z]{3}' if re.fullmatch(pattern,'abc'): print("CORRECT") else: print("NO") pattern2 = '[a-z][a-z][a-z]' if re.fullmatch(pattern2,'abc'): print("CORRECT") else: print("NO")
补充说明
如果需要获取匹配的详细信息(比如匹配内容、位置),可以将返回值赋值给变量后操作:
match_result = re.fullmatch(pattern, 'abc') if match_result: print(f"匹配成功,内容为:{match_result.group()}")
内容的提问来源于stack exchange,提问作者Wazzuper11
相关产品推荐
相关产品推荐

