在PHP中遇到这个正则表达式的问题

时间:2011-12-03 04:38:10

标签: php expression preg-match-all

我正在尝试使用preg_match_all函数在PHP上运行正则表达式

“{{content 1}} {{content 2}}”

我正在寻找的结果是在{{和}}

中有2个匹配的数组

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

我怀疑我的表情太贪心但是如何减少贪婪?

3 个答案:

答案 0 :(得分:4)

您可以使用ungreedy修饰符?,如下所示:

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

新的正则表达式将输出:

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

)

修改

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

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

此外,这是一个有用的regex modifiers列表。

答案 1 :(得分:1)

您也可以使用U PCRE modifier(Ungreedy)

答案 2 :(得分:-1)

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

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