Python 为什么\w+;匹配尾随的换行符?
我很好奇为什么下面会输出匹配的结果:Python 为什么\w+;匹配尾随的换行符?,python,regex,Python,Regex,我很好奇为什么下面会输出匹配的结果: import re foo = 'test\n' match = re.search('^\w+$', foo) if match == None: print "It did not match" else: print "Match!" 换行符在字符串末尾之前,是吗?为什么匹配?^和$表示“行的开始”和“行的结束”,而不是“字符串的开始”和“字符串的结束”。使用\A表示“字符串的开始”,使用\Z表示“字符串的结束”。来自Python文档 “
import re
foo = 'test\n'
match = re.search('^\w+$', foo)
if match == None:
print "It did not match"
else:
print "Match!"
换行符在字符串末尾之前,是吗?为什么匹配?
^
和$
表示“行的开始”和“行的结束”,而不是“字符串的开始”和“字符串的结束”。使用\A
表示“字符串的开始”,使用\Z
表示“字符串的结束”。来自Python文档
“$”匹配字符串的结尾或字符串结尾处的换行符之前,并且在多行模式下也匹配换行符之前。foo同时匹配'foo'和'foobar',而正则表达式foo$只匹配'foo'。更有趣的是,在'foo1\nfoo2\n'中搜索foo.$通常与'foo2'匹配,但在多行模式下搜索'foo1';在“foo\n”中搜索单个$将找到两个(空)匹配项:一个在换行符之前,另一个在字符串末尾
$
“匹配字符串的结尾或字符串结尾的换行符之前”,在Python中,“字符串的结尾”是\Z
(不同于Perl,Perl有\Z
和\Z
)。