为什么python正则表达式交替(A | B)不符合doc?

doc*_*n13 1 python regex

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

re.search('eagle|cat', 'The cat is an animal. The eagle is bird').group()
Run Code Online (Sandbox Code Playgroud)

我希望'eagle'按照正则表达式doc 看到结果但是我得到了'cat'.我在这里错过了什么吗?

Mar*_*ers 6

具有替代模式的正则表达式(由分隔开|)不扫描第一个替代的整个字符串,然后扫描第二个替代.

相反,在输入字符串中的每个位置都考虑每个替代方案.因此,在位置0,既不匹配eagle也不cat匹配,但在第4位cat匹配,即使eagle先尝试过.

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

两个模式在同一位置匹配时,替代排序很重要.因此,即使输入字符串中有一个字后面,也会一直cat|cats返回:cats

>>> import re
>>> re.search('cat|cats', 'Like herding cats.').group()
'cat'
>>> re.search('cats|cat', 'Like herding cats.').group()
'cats'
Run Code Online (Sandbox Code Playgroud)