通过捕获和“?!”优化小正则表达式断言

时间:2013-12-18 10:52:16

标签: php regex optimization

我需要使用以下正则表达式对多个PHP文件进行重要检查:

\$this\->(m_\w+)(?!(.|\v)*private \$\1)

但是我的IDE(Sublime Text 2)说它在尝试匹配正则表达式时耗尽了堆栈空间。它适用于非常小的文件,但我需要检查的文件都不够小。那么如何优化正则表达式以使其适用于任何长度的文本?

1 个答案:

答案 0 :(得分:4)

您可以使用以下方法提高图案速度:

\$this->(m_\w++)(?!(?>[^p]++|\Bp++|p(?!rivate \$\1\b))++private \$\1\b)