正则表达式:不匹配以换行符(\ n)和行尾锚($)结尾的字符串
问题内容:
我无法弄清楚如何匹配字符串,但是如果字符串末尾有换行符(\n
),该字符串似乎会自动删除,则无法解决:
import re
print(re.match(r'^foobar$', 'foobar'))
# <_sre.SRE_Match object; span=(0, 6), match='foobar'>
print(re.match(r'^foobar$', 'foobar\n'))
# <_sre.SRE_Match object; span=(0, 6), match='foobar'>
print(re.match(r'^foobar$', 'foobar\n\n'))
# None
对我来说,第二种情况也应该回来None
。
当我们用$
like设置模式的结尾时^foobar$
,它只能匹配like的字符串foobar
,而不是foobar\n
。
我想念什么?
问题答案:
您很可能不需要$
,而是\Z
:
>>> print(re.match(r'^foobar\Z', 'foobar\n'))
None
\Z
仅在字符串末尾匹配。