我有以下正则表达式来匹配 {{statement}}。
#{{(.*?)}}#
我在 preg_replace_callback 中使用它。它工作正常,但问题是,如果同一 block 中有另一个 block ,它就会中断。 作为示例,以下将中断
{{$a="{{name}}"}}
它最多匹配 {{$a="{{name}}
,但我希望它匹配 {{$a="{{name}}"}}
.
如果可能的话,我可以接受这样的转义字符。
{{$a="\{{name}}"}}
在这种情况下,以\开头的 block 将被转义。
最佳答案
您对 {{(.*?)}}
所做的事情是要求正则表达式延迟匹配。
*?
量词匹配零次到无限次,尽可能少的次数,根据需要扩展(惰性搜索)。
您应该使用{{(.*)}}
。
*
尽可能多次,根据需要回馈(贪婪)
<强> Regex101 Demo
关于php - Preg 匹配 {{statement}} 表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43719446/