python正则表达式对备选方案的排序是否影响速度/备选方案之间的选择

python正则表达式对备选方案的排序是否影响速度/备选方案之间的选择,python,regex,Python,Regex,我正在尝试匹配(并删除)4000个表达式中的任何一个 如果我把最常见的匹配放在最前面,那么速度匹配(或者它是未定义的) 虽然通常是排他性的,但我有时会使用默认情况:“ax*| a(0-9)|”,即“a”,但如果可能的话,我希望使用贪婪匹配。重新订购“a(0-9)| ax*”是否足够,或者规范是否不保证这一点 备选方案的排序是否影响速度/备选方案之间的选择 是的。从左到右分析备选组,这发生在输入字符串中的每个位置 因此,将最常见的比赛放在一开始就已经是一种促进 当谈到NFA正则表达式(如Pytho

我正在尝试匹配(并删除)4000个表达式中的任何一个

如果我把最常见的匹配放在最前面,那么速度匹配(或者它是未定义的)

虽然通常是排他性的,但我有时会使用默认情况:“ax*| a(0-9)|”,即“a”,但如果可能的话,我希望使用贪婪匹配。重新订购“a(0-9)| ax*”是否足够,或者规范是否不保证这一点

备选方案的排序是否影响速度/备选方案之间的选择

是的。从左到右分析备选组,这发生在输入字符串中的每个位置

因此,将最常见的比赛放在一开始就已经是一种促进


当谈到NFA正则表达式(如Python)中的未编排替代列表时,重要的是可以在同一位置匹配的替代列表的排序方式应确保最长的优先,否则较短的替代列表将始终“获胜”,当你与
some | someone
->
xxx
匹配时,你可能会得到
xxxone
,想要从
someone

获得
xxx
,你有任何参考文献记录这一点吗?regex引擎非常渴望。一旦找到有效匹配项,它就会停止搜索。我昨天无法对该问题进行投票,因为我的票数已用完-现在完成。