为了账号安全,请及时绑定邮箱和手机立即绑定

可以加速 PHP 正则表达式

可以加速 PHP 正则表达式

PHP
慕运维8079593 2023-05-12 14:33:17
我试图编写一个快速的正则表达式,但是当我测试它时,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 上的示例。有没有办法加快我的正则表达式或者我必须接受那个速度?
查看完整描述

1 回答

?
呼唤远方

TA贡献1856条经验 获得超11个赞

你可以使用

(?s)\{if\s(.+?)}\R((?>(?!\{\/?if[}\s]).|(?R))*?)\{\/if}

请参阅正则表达式演示

细节

  • \{if\s-{if和一个空格

  • (.+?)- 第 1 组:任何一个或多个字符,尽可能少

  • }- 一个}字符

  • \R- 任何换行序列

  • ((?>(?!\{\/?if[}\s]).|(?R))*?){/if- 第 2 组:除开始 a或+whitespace 字符序列的字符以外的任何字符{if,或整个模式递归,0 次或多次,但尽可能少

  • \{\/if}-{/if}文本


查看完整回答
反对 回复 2023-05-12
  • 1 回答
  • 0 关注
  • 101 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信