Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 正则表达式中lookbehind和lookahead的性能影响_Regex_Lookahead_Lookbehind - Fatal编程技术网

Regex 正则表达式中lookbehind和lookahead的性能影响

Regex 正则表达式中lookbehind和lookahead的性能影响,regex,lookahead,lookbehind,Regex,Lookahead,Lookbehind,今天早些时候我遇到了这个问题 在Wiktor Stribiżews的回答中,它非常直观地解释了为什么OP的惰性模式不适合长字符串,因此失败了,这表明了一个错误 现在,OP想在已知标记之间匹配文本。在我看来,这是lookahead和lookahead最完美、最明显的用法,因为您实际上是在两个已知字符串之间寻找某个东西,因此是make。它有131个步骤。虽然没有老年退休金计划那么糟糕,但远远落后于46英镑 我本以为是在寻找lookback,一旦发现它匹配了所有东西,同时寻找lookahead,但考虑

今天早些时候我遇到了这个问题

在Wiktor Stribiżews的回答中,它非常直观地解释了为什么OP的惰性模式不适合长字符串,因此失败了,这表明了一个错误

现在,OP想在已知标记之间匹配文本。在我看来,这是lookahead和lookahead最完美、最明显的用法,因为您实际上是在两个已知字符串之间寻找某个东西,因此是make。它有131个步骤。虽然没有老年退休金计划那么糟糕,但远远落后于46英镑

我本以为是在寻找lookback,一旦发现它匹配了所有东西,同时寻找lookahead,但考虑到这131个步骤,情况似乎并非如此


lookaheads和lookbehinds在性能方面是如何工作的?我已经找到了一些关于(,)的文档,但我没有找到关于它们如何在内部工作或使用它们的性能影响的信息。

根据我的实际经验,regex风格甚至在这方面也有所不同。你不能让这个问题成为语言不可知论。嗯,这是一个相当宽泛的话题。@WiktorStribiżew感谢您对口味的了解。对于常见的pcre和python,它给出了131个步骤,因此(这里进行一个大的猜测)它们可能具有相同的内部结构。问题是很难找到这方面的文档:/@Jorge.V你应该比较
(?Wiktors模式另一方面是关于块匹配的,具有清晰的边界,它甚至可以作为
NEM12[^@SebastianProske工作。谢谢你的评论。是的,我理解Wiktors“智能”方法,我只是不明白为什么像您这样删除环顾区会将执行从131个步骤减少到55个步骤;换句话说,为什么它需要额外的步骤来“识别”环顾四周,为什么是这种情况,取决于它取决于什么,这样我就可以有一个环顾四周的好情况和一个不可能的情况。如果有人知道内部是如何工作的,或者相关文档的来源,那就太好了。