PCRE 函数

目录

添加备注

用户贡献的备注 4 个备注

2
theking2 at king dot ma
9 个月前
编写正则表达式可能很繁琐且容易出错。在 https://regex101.com/ 上测试您的正则表达式,以确保您没有遗漏任何内容。它甚至会对示例字符串进行颜色编码。
6
steve at stevedix dot de
20 年前
需要记住的是,正则表达式实际上是一种声明式编程语言,类似于 Prolog:您的正则表达式是一组规则,正则表达式解释器会尝试将这些规则与字符串进行匹配。在此匹配过程中,解释器会假设某些内容,并继续假设这些内容,直到它遇到匹配失败,这会导致它回溯。正则表达式假设“贪婪匹配”,除非明确指示不要这样做,这会导致大量回溯。一个经验法则是在速度方面,回溯越多,匹配过程越慢。

因此,如果您正在尝试优化程序以快速运行(并且您无法摆脱正则表达式),那么优化正则表达式以快速匹配至关重要。

我建议使用“The Regex Coach”之类的工具来调试您的正则表达式字符串。

http://weitz.de/files/regex-coach.exe (Windows 安装程序) http://weitz.de/files/regex-coach.tgz (Linux tar 存档)
4
stronk7 at moodle dot org
16 年前
关于 5.2.x 和 pcre.backtrack_limit 的一个注释

请注意,此设置在以前的 PHP 版本中不存在,而这些版本中的行为(或限制)实际上更高,因此所有这些 PCRE 函数都能够“捕获”更长的字符串。

随着该设置的出现,默认值为 100000(小于 100K),您将无法使用例如“非贪婪”修饰符来匹配/捕获超过该大小的字符串。

因此,在很多情况下,您需要提高该(IMO 非常小)限制。

最糟糕的是,PHP 根本不会匹配/捕获超过 pcre.backtrack_limit 的字符串,并且会完全静默地处理(我认为抛出一些 NOTICE/WARNING 如果提高了对开发人员来说会有很大帮助)。

我已经在论坛、错误报告等等中看到很多人都遇到了这种行为改变。

希望此备注有所帮助,再见 :-)
-21
Svoop
15 年前
我为 Perl 兼容正则表达式 (PCRE) 编写了一个简短的介绍和一个色彩丰富的备忘单

http://www.bitcetera.com/en/techblog/2008/04/01/regex-in-a-nutshell/
To Top