有没有简单的方法来测试正则表达式是否与Python中的整个字符串匹配?我以为放到$最后可以做到这一点,但事实证明,$在尾随换行符的情况下这是行不通的。
例如,以下内容返回一个匹配项,即使那不是我想要的。
re.match(r'\w+$', 'foo\n')
Run Code Online (Sandbox Code Playgroud)
您可以使用\Z:
\Z
仅在字符串末尾匹配。
In [5]: re.match(r'\w+\Z', 'foo\n')
In [6]: re.match(r'\w+\Z', 'foo')
Out[6]: <_sre.SRE_Match object; span=(0, 3), match='foo'>
Run Code Online (Sandbox Code Playgroud)
要测试是否匹配整个字符串,只需检查匹配的字符串是否与整个字符串一样长:
m = re.match(r".*", mystring)
start, stop = m.span()
if stop-start == len(mystring):
print("The entire string matched")
Run Code Online (Sandbox Code Playgroud)
注意:这与如何匹配尾随换行符的问题(您没有问过)无关。