Python 如何确定搜索顺序?

Python 如何确定搜索顺序?,python,regex,Python,Regex,假设我有一个类似于: re.compile(r"(pattern1)|(pattern2)|...|(patternN)") 其中模式是通过某种方法有意排序的。我希望搜索顺序是从左到右返回第一个匹配,但结果证明并非如此 如何确定模式搜索的顺序 编辑: 这很可能是我的正则表达式的一个问题,但由于它相当长,我想确保我关于搜索方法的假设是正确的。搜索顺序是从左到右搜索字符串;然后从左到右在模式上搜索字符串中相同的初始位置。因此,如果您在“dcba”中查找r“b | c”,则会首先找到“c”,因为它最

假设我有一个类似于:

re.compile(r"(pattern1)|(pattern2)|...|(patternN)")
其中模式是通过某种方法有意排序的。我希望搜索顺序是从左到右返回第一个匹配,但结果证明并非如此

如何确定模式搜索的顺序

编辑:
这很可能是我的正则表达式的一个问题,但由于它相当长,我想确保我关于搜索方法的假设是正确的。

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


但是,如果您正在查找
r“.a |.b”
,则会找到
“cba”
,而不是
“cb”
,因为它们从同一位置开始,但是
。a
替代方案在模式中更快。

re.search
仅返回第一个匹配项

比如说

x="hi hello"
print re.search(r"(hello)|(hi)",x).groups()
这里的输出将是
hi
,而不是
hello


关于
match
vs
search
。search将查找以
h
开头的字符串,并将首先匹配
hi

您所说的
是什么意思,但结果已证明不是这样。
?您能展示一个示例来演示“否则”结果吗?展示一些出现这种情况的示例代码。我无法复制:@verball\u Kint答案在你的问题中
我希望搜索顺序是从左到右返回第一个匹配项
@verball\u Kint:可能是因为你一直说“我的正则表达式有问题”,但你仍然没有发布实际的代码来证明你的问题。我明白了,问题一定出在正则表达式本身,这很奇怪,因为我分别测试了每个模式;我所能做的就是猜测你在做什么,并给出一个非常笼统的答案,除非你发布关于你在做什么的详细信息。@AvinashRaj正则表达式有点笨拙,但如果搜索顺序是从左到右(模式和文本),那么问题当然是我的正则表达式。但是,正如我们所展示的,它实际上是从左到右的。第一个匹配是所需的行为,我的电脑似乎有点问题regex@Verbal_Kint然后,如果你能发布准确的字符串和输出,那么答案会更好。我有我想要的答案,只需要返回正则表达式,看看模式是如何连接的,从左到右是搜索顺序