正则表达式 - 匹配双大括号之间的多行内容

Regex - Match multi-line content between double curly brackets

我正在尝试重构一些代码,需要使用正则表达式来查找大量字符串。示例字符串如下:

  {{ Form::text('twitter', Input::old('twitter'), 
              array(
                    'class'=>'form-control ',
                    'placeholder'=>'E.g http://www.twitter.com/MyTwitterPage'
                    ))

 }}

我已经设法使用 \{\{(.*\s*Form::.*\s*)\}\} 来匹配单行字符串,但它无法匹配多行字符串,例如上面的字符串。

此外,如果有任何帮助,我正在使用 PHPStorm 的正则表达式查找功能。

非常感谢任何帮助。

准备文件并删除换行符。

或将 /s 标志设置为正则表达式并查看是否有效,不确定 php 是否支持它。

/\{\{(.*\s*Form::.*\s*)\}\}/s

您可以使用

\{\{(\s*Form::\w*\((?:[^}]*(?:}[^}]+)*))}}

regex demo

\{\{(\s*Form::\w*\([\s\S]*?)}}基本相同,但使用展开逻辑,效率更高。