php - PHP 使用哪种正则表达式算法?

标签 php regex algorithm pcre

看完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 风格的算法,它到底是什么?我正在寻找与其他算法相关的抽象定义/解释。

最佳答案

来自手册:

http://www.php.net/pcre :

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/

相关文章:

Python:从文件中选择随机行,然后删除该行

客户姓名验证算法

javascript - 如何获取具有相同类和名称的多个选择选项的值

php - 使用 MySql 和 PHP 将数据分类在一个共同的日期下

regex - 如何在 Nginx 中提供嵌套项目

java - 正则表达式中的双正斜杠句点

Java Regex 使用正则表达式保留预期字符串并删除其他字符串

java - 从数组 vector 中创建一个元素总和等于数字 k 的数组

php - 如何使用 wamp 在 netbeans 7.1.1 中为 zend 框架 1.11.11 设置开发环境?

php - 用php强制下载大文件