gpt4 book ai didi

python - 为什么正则表达式交替 (A|B) 不按照文档匹配?

转载 作者:太空宇宙 更新时间:2023-11-04 07:37:55 26 4
gpt4 key购买 nike

当我在 python 2.7 中运行以下语句时,

re.search('eagle|cat', 'The cat is an animal. The eagle is bird').group()

我希望看到 'eagle' 作为正则表达式文档的结果但是我得到了 'cat'。我在这里遗漏了什么吗?

最佳答案

具有替代模式(由 | 分隔)的正则表达式不会扫描整个字符串以查找第一个替代项,然后再扫描第二个。

相反,在输入字符串的每个位置都会考虑每个备选方案。所以在位置 0,eaglecat 都不匹配,但在位置 4,cat 匹配,即使 eagle首先尝试。

因此,cat 作为匹配返回;字符串的其余部分不再需要考虑。

两个 模式在同一位置匹配 时,替代顺序很重要。所以 cat|cats 将始终返回 cat,即使在输入字符串中的那个词之后有一个 s:

>>> import re
>>> re.search('cat|cats', 'Like herding cats.').group()
'cat'
>>> re.search('cats|cat', 'Like herding cats.').group()
'cats'

关于python - 为什么正则表达式交替 (A|B) 不按照文档匹配?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30237604/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com