看完this article关于两种不同类型的正则表达式算法(Perl 5.8.7 和 Thompson NFA),根据这篇文章,后者比前者快约 1,000,000 倍。我每天都使用 PHP,并且经常使用正则表达式,所以我想知道 PHP 使用的是哪种算法。
我找到了 this question ,但它仅适用于 JavaScript。其中一个答案指出 JavaScript 使用 Thompson NFA 算法,但这当然会因实现而异。我认为 PHP 在转向它的 PCRE
函数集时可能已经转而使用更快的算法,弃用了 ereg_*
东西。
我看过 PHP PCRE documentation而且,据我所知,它没有告诉我它使用什么算法。对我来说,首字母缩略词 PCRE
告诉我它使用 Perl Compatible Regular Expressions
,所以我假设它使用 Perl 风格的算法。
PHP使用哪种正则表达式算法?它是“Perl 5.8.7 风格”,还是使用更快的 Thompson NFA 算法,还是完全使用另一种算法?它甚至可以使用 Perl 后端来运行它的表达式吗?
如果 PHP 确实使用了 Perl 风格的算法,它到底是什么?我正在寻找与其他算法相关的抽象定义/解释。
最佳答案
来自手册:
Regular Expressions (Perl-Compatible)
http://www.php.net/manual/en/intro.pcre.php :
The PCRE library is a set of functions that implement regular expression pattern matching using the same syntax and semantics as Perl 5, with just a few differences (see below). The current implementation corresponds to Perl 5.005.
关于php - PHP 使用哪种正则表达式算法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10218925/