我正在尝试匹配(并删除)任何4000个表达式。
如果我将最常见的匹配放在前面,那么速度匹配(或未定义)
虽然通常是排他性的,但我有时会有默认情况:'ax * | a(0-9)|',即'a',但如果可能,我想要一个贪婪的比赛。是否足以重新排序'a(0-9)| ax *'或者这不是规范保证的吗?
答案 0 :(得分:0)
替代品的排序对于速度/选择之间的选择是否重要?
是的,确实如此。从左到右分析备选组,并在输入字符串中的每个位置进行分析。
因此,将最常见的比赛放在一开始就是一种推动力。
当谈到NFA正则表达式中的 unanchored 交替列表时(如在Python中),重要的是可以在相同位置匹配的替代方案以最长的方式排序首先是,因为否则较短的替代方案将始终"赢得",当与xxxone
匹配时,您最终可能会some|someone
- > xxx
希望从xxx
获取someone
。