Python中re.match("^abc$", "abc\n")为何匹配成功?表单验证困惑
解决正则表达式
^abc$匹配abc\n的问题 问题原因
Python re模块中,默认的$锚点不仅匹配字符串的绝对末尾,还会匹配字符串末尾换行符(\n)之前的位置。所以当你用re.match("^abc$", "abc\n")时,$匹配了\n前面的位置,导致abc部分被成功匹配,返回了Match对象。
解决方法
使用
re.fullmatch()替代re.match()
这个函数要求正则表达式匹配整个输入字符串,无需手动添加^和$锚点,直接写目标内容即可:import re # 匹配纯"abc",输入"abc\n"会返回None result = re.fullmatch("abc", "abc\n") print(result) # 输出: None用
\Z锚点替换$\Z仅匹配字符串的绝对末尾,不会匹配换行符之前的位置,修改正则后即可严格匹配:import re result = re.match("^abc\Z", "abc\n") print(result) # 输出: None
内容的提问来源于stack exchange,提问作者GY Z
相关产品推荐
相关产品推荐

