为什么这个字符串匹配正则表达式?

时间:2013-09-02 03:47:39

标签: python regex

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

  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”等字符串。

1 个答案:

答案 0 :(得分: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+