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

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

最佳答案

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

# ^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/

相关文章:

python - 如何从信号中获取频率?

python - 类型错误 : Cannot index by location index with a non-integer key

python - 用 Scrapy 编写 Instagram 爬虫。我怎样才能进入下一页?

Java - 正则表达式组匹配异常

regex - 如何将 POS 与单词分开

python - 减少 django 项目的 QuerySet 数量

python - 更改字符串输入的格式

java - 将 XSD 正则表达式转换为 Java 正则表达式

java - 检查 Scanner.next() 获取的字符串是否包含数字

regex - 使用 Python 查找头韵单词序列