首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Javascript对Regex使用哪种正则表达式算法?

问Javascript对Regex使用哪种正则表达式算法?
EN

Stack Overflow用户
提问于 2009-04-07 20:58:51
回答 2查看 3.9K关注 0票数 15

我今天阅读了关于两种不同正则表达式算法的this article。

根据the article的说法,旧的Unix工具,如ed、sed、grep、egrep、awk和lex,都在它们的常规表达式中使用所谓的Thompson NFA算法……

然而,Java、Perl、PHP和Python等较新的工具都对它们的正则表达式使用了不同的算法,这些算法要慢得多。

This article根本没有提到Javascript的regex算法(是的,我知道有各种各样的JS引擎),但我想知道是否有人知道他们使用的是哪种算法,以及这些算法是否应该换成Thompson NFA。

EN

回答 2

Stack Overflow用户

发布于 2009-04-08 09:38:17

尽管ECMA标准没有指定ECMAScript实现应该使用的算法,但该标准要求ECMAScript正则表达式必须支持反向引用(\1、\2等)。排除DFA和"Thompson NFA“实现。

票数 8
EN

Stack Overflow用户

发布于 2009-04-07 21:04:21

Perl使用了记忆递归回溯搜索,并且在5.10中的一些改进中,不再在perl -e '("a" x 100000) =~ /^(ab?)*$/;'上失败。在我最近在OS机器上执行的测试中,Perl5.10的性能优于awk,即使在awk的算法被认为更好的情况下也是如此。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/727565

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档