我希望将完整的字符串与特定模式匹配。让我们说:
word = "aaaa"
test = re.match(r"^aaaa$", word) # this returns True
但是,如果单词后跟换行符:
word = "aaaa\n"
test = re.match(r"^aaaa$", word) # Also returns True :(
但我希望找到一种方法让它在最后一种情况下返回False。有没有办法区分“\ n”?
答案 0 :(得分:5)
而不是主播^
和$
使用\A
作为开始而使用\Z
作为结束:
>>> print re.match(r'\Aaaaa\Z', 'aaaa')
<_sre.SRE_Match object at 0x1014b9bf8>
>>> print re.match(r'\Aaaaa\Z', 'aaaa\n')
None
\A
匹配字符串的实际开头,\Z
匹配实际结尾,并且多行字符串中只有\A
和\Z
中的一个,而{{1}可以在每一行中匹配。
我建议reading this very good article on permanent line anchors.
与$
不同.NET
,Java
,PCRE
,Delphi
,PHP
Python
仅与非常结束的字符串。 Python不支持\Z
。
答案 1 :(得分:1)
您可以使用negative lookaheads
来检查它是否包含换行符号。在您的情况下,^aaaa(?!\n)$
。