python正则表达式确定了替代方案的速度/选择之间的选择

时间:2016-04-15 20:38:58

标签: python regex

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

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

虽然通常是排他性的,但我有时会有默认情况:'ax * | a(0-9)|',即'a',但如果可能,我想要一个贪婪的比赛。是否足以重新排序'a(0-9)| ax *'或者这不是规范保证的吗?

1 个答案:

答案 0 :(得分:0)

  

替代品的排序对于速度/选择之间的选择是否重要?

是的,确实如此。从左到右分析备选组,并在输入字符串中的每个位置进行分析。

因此,将最常见的比赛放在一开始就是一种推动力。

当谈到NFA正则表达式中的 unanchored 交替列表时(如在Python中),重要的是可以在相同位置匹配的替代方案以最长的方式排序首先是,因为否则较短的替代方案将始终"赢得",当与xxxone匹配时,您最终可能会some|someone - > xxx希望从xxx获取someone