正则表达式中的回首和超前对性能的影响

时间:2018-07-30 10:16:02

标签: regex lookahead lookbehind

我今天早些时候Catastrophic backtracking issue with large string using regular expression遇到了这个问题。

在Wiktor Stribiewews的回答中,非常直观地解释了为什么OP (OP regex, 317 steps)的惰性模式不适用于长字符串,因此失败了,建议使用new regex, 46 steps

现在,OP希望在已知标签之间匹配文本。在我看来,这是对超前和向后看的完美,最明显的用法,因为您实际上是在两个已知字符串之间寻找某种东西,因此将其做成this regex。它具有131个步骤。它不如OPs差,但远远落后于46。

我本以为是寻找先行者,一旦发现它与寻找先行者相匹配,但是考虑到这131个步骤,情况似乎并非如此。

超前和后退如何在性能方面发挥作用?我已经找到了一些有关文档(12),但找不到有关它们内部工作方式或使用它们的性能含义的信息。

0 个答案:

没有答案