如何确定re.search的顺序?

时间:2015-06-15 04:49:31

标签: python regex

假设我的模式类似于:

re.compile(r"(pattern1)|(pattern2)|...|(patternN)")

通过某种方法有意订购图案的地方。我希望搜索顺序从左到右返回第一个匹配,但结果已证明不然。

如何确定模式搜索的顺序?

编辑: 这可能是我的正则表达式的问题,但由于它非常冗长,我想确保我对搜索方法的假设是正确的。

2 个答案:

答案 0 :(得分:1)

搜索顺序在搜索字符串上从左到右;然后在搜索字符串中相同初始位置的模式上从左到右。因此,如果您在r"b|c"中查找"dcba",则会先找到"c",因为它最接近"dcba"的开头而不是"b"

但是,如果您正在寻找r"..a|.b",则会找到"cba",而不是"cb",因为它们从同一位置开始,但..a替代方案在图案。

答案 1 :(得分:1)

re.search仅返回第一场比赛。

说出来。

x="hi hello"
print re.search(r"(hello)|(hi)",x).groups()

此处输出为hi而不是helloRead here

match vs search。搜索会查找以h开头的字符串,并首先匹配hi