Php preg_replace,正则表达式模式不匹配

时间:2015-03-02 21:17:27

标签: php regex preg-replace

我正在尝试开发一个基本的模板引擎,所以我必须使用preg_replace这么多。关于以下问题,我有一个问题:

$subject = "{%content%} %content%";
$pattern = '/matched_regex/';
$replace = 'OK';
echo preg_replace($pattern,$replace,$subject);

,输出必须如下:

{%content%} OK

换句话说,它只会与%content%

匹配

我该怎么做正则表达式?

1 个答案:

答案 0 :(得分:1)

这将仅匹配%content%之后的{或位于主题字符串开头的%content%。将\1之前的任何字符放回替换字符串中的$subjects = [ '{%content%} %content%', 'Foo {%content%} bar %content% baz', 'Foo{%content%}bar%content%baz', 'Foo{%content%}bar%content%', '{%content%}%content%', '%content%{%content%}', ]; $replace = 'OK'; foreach ($subjects as $subject) { $pattern = '/(^|[^{])%content%/'; echo preg_replace($pattern, '\1'.$replace, $subject), PHP_EOL; }

{%content%} OK
Foo {%content%} bar OK baz
Foo{%content%}barOKbaz
Foo{%content%}barOK
{%content%}OK
OK{%content%}

输出:

{{1}}