Python Regex - 使用换行符拒绝字符串

时间:2016-04-18 14:30:12

标签: python regex newline

我希望将完整的字符串与特定模式匹配。让我们说:

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”?

2 个答案:

答案 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.

$不同.NETJavaPCREDelphiPHP Python仅与非常结束的字符串。 Python不支持\Z

答案 1 :(得分:1)

您可以使用negative lookaheads来检查它是否包含换行符号。在您的情况下,^aaaa(?!\n)$