php - Preg 匹配 {{statement}} 表达式

标签 php regex

我有以下正则表达式来匹配 {{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/

相关文章:

php - 解析 JSON : multi-level array

php - 从 dhtmlx 调度程序中删除 block 区域

java - Java中自动转述句子

python - 如何在 Netbeans 项目浏览器中忽略 pyc 文件(正则表达式问题)

c# - ClassName.PropertyName 的正则表达式

php - 展开链接以显示图像,无需使用 JavaScript

PHP 到 XML foreach 从 mySQL

php - 请求有关基本 php PDO 连接的帮助

regex - 连字符是否需要在正则表达式中转义?

C# Regex.Replace 匹配相同数量的字符