在PHP中使用这个正则表达式遇到麻烦


Having trouble with this regular expression in PHP

我试图用PHP使用preg_match_all函数对以下字符串运行正则表达式

"{{内容1}}{{内容2}}"

我正在寻找的结果是数组中有2个匹配{{和}}

这是表达式'/'{'{(.+)'}'}/'

我怀疑我的表达太贪婪,但如何使它不那么贪婪?

您可以使用非贪婪修饰符?,如下所示:

$regex = '/'{'{.*?'}'}/';

新的正则表达式将输出:

Array
(
    [0] => Array
        (
            [0] => {{content 1}}
            [1] => {{content 2}}
        )
)

编辑:

我想起了另一种方法。您可以在正则表达式字符串的末尾添加U(大写u),结果将是相同的,如下所示:

$regex = '/'{'{.+'}'}/U';

还有,这里是一个有用的正则表达式修饰符列表

您也可以使用U PCRE修饰符(Ungreedy)

正则表达式字符串是单引号还是双引号PHP字符串?因为如果它在双引号字符串中,花括号包含变量,因此需要转义两次。

"/''{''{(.+)''}''}/"