当我在 python 2.7 中运行以下语句时,
re.search('eagle|cat', 'The cat is an animal. The eagle is bird').group()
我希望看到 'eagle'
作为正则表达式文档的结果但是我得到了 'cat'
。我在这里遗漏了什么吗?
具有替代模式(由 |
分隔)的正则表达式不会扫描整个字符串以查找第一个替代项,然后再扫描第二个。
相反,在输入字符串的每个位置都会考虑每个备选方案。所以在位置 0,eagle
和 cat
都不匹配,但在位置 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'
我是一名优秀的程序员,十分优秀!