2

为什么这个字符串匹配模式?

  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”之类的字符串。

4

1 回答 1

9

在您的正则表达式中,有尾随|

# ^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+如果您还想匹配多个数字,请使用。

于 2013-09-02T03:51:30.783 回答