v8/firefox RegExp 是基于有限自动机或递归回溯的实现吗?



我遇到了这个文档:https://swtch.com/~rsc/regexp/regexp1.html这声称Perl,Java和许多其他语言使用基于递归回溯的"慢速"RegExp,但grep和awk(也是Go)使用更快的有限自动机。即正则表达式被转换为 FA 然后执行。该论文还声称所有语言都应该切换到FA技术,尽管它的实现更复杂。我很好奇当前的JavaScript实现是否以某种方式具有它。

V8 的正则表达式引擎 "Irregexp" 基于自动机,请参阅 https://blog.chromium.org/2009/02/irregexp-google-chromes-new-regexp.html。

Firefox现在使用V8的Irregexp的一个分支,见 https://bugzilla.mozilla.org/show_bug.cgi?id=976446,所以它也基于自动机。

最新更新