假设我的模式类似于:
re.compile(r"(pattern1)|(pattern2)|...|(patternN)")
通过某种方法有意订购图案的地方。我希望搜索顺序从左到右返回第一个匹配,但结果已证明不然。
如何确定模式搜索的顺序?
编辑: 这可能是我的正则表达式的问题,但由于它非常冗长,我想确保我对搜索方法的假设是正确的。
答案 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
而不是hello
。Read here
约match
vs search
。搜索会查找以h
开头的字符串,并首先匹配hi
。