为什么这个字符串匹配模式?
pattern = """
^Page \d of \d$|
^Group \d Notes$|
^More word lists and tips at http://wwwmajortests.com/word-lists$|
"""
re.match(pattern, "stackoverflow", re.VERBOSE)
根据我的说法,它应该匹配“Page 1 of 1”或“Group 1 Notes”之类的字符串。
最佳答案
在您的正则表达式中,尾部有 |
:
# ^More word lists and tips at http://wwwmajortests.com/word-lists$|
# ^
空模式匹配任何字符串:
>>> import re
>>> re.match('abc|', 'abc')
<_sre.SRE_Match object at 0x7fc63f3ff3d8>
>>> re.match('abc|', 'bbbb')
<_sre.SRE_Match object at 0x7fc63f3ff440>
因此,删除尾随的 |
。
顺便说一句,你不需要 ^
因为 re.match
仅检查字符串开头的匹配项。
而且,我建议您使用原始字符串 (r'....'
) 来正确转义反斜杠。
补充说明
\d
只匹配一个数字。如果您还想匹配多个数字,请使用 \d+
。
关于python - 为什么这个字符串匹配正则表达式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18565413/