可以加速 PHP 正则表达式

我试图编写一个快速的正则表达式,但是当我测试它时,PHP (preg_replace_callback) 将有大量的步骤来获得结果,我认为这不是一个好的性能 - 必须更快。


我的正则表达式代码:\{if\s{1}(.+?)\}\n(((?R)|.*?)+)\{\/if\}


应该解析的代码(递归):


{if $name == 'Tree'}

    Hey, this is a Tree!

{/if}


{if $name == 'Example'}

    {if $number == '1'}

        Hey, this is an Example with the number 1

    {/if}

{/if}

您可以在此处测试 regex101 上的示例。


有没有办法加快我的正则表达式或者我必须接受那个速度?


慕运维8079593
浏览 102回答 1
1回答

呼唤远方

你可以使用(?s)\{if\s(.+?)}\R((?>(?!\{\/?if[}\s]).|(?R))*?)\{\/if}请参阅正则表达式演示细节\{if\s-{if和一个空格(.+?)- 第 1 组:任何一个或多个字符,尽可能少}- 一个}字符\R- 任何换行序列((?>(?!\{\/?if[}\s]).|(?R))*?){/if- 第 2 组:除开始 a或+whitespace 字符序列的字符以外的任何字符{if,或整个模式递归,0 次或多次,但尽可能少\{\/if}-{/if}文本
打开App,查看更多内容
随时随地看视频慕课网APP