我有这个Regexp:
/\{%\s([^else|endloop|endif][a-z0-9\.\|_]+)\s%\}/si
我在preg_replace中使用此regexp。 这个标记:
{# comment %}
{# comment number 2$% %}
{% variable %}
{% array.key1.key2 %}
{% array.key1.key2|escape|bold %}
{% variable|escape %}
{% loop array as item %}
My item is {% item.text %}
{% endloop %}
{% if (something): %}
do something truly
{% else: %}
nothing to do
{% endif; %}
为什么此正则表达式不适用于{% item.text %}
但适用于其他?
我认为我在这里犯了一些错误[^else|endloop|endif]
我做错了什么?
答案 0 :(得分:4)
我想你可能打算:
/\{%\s((?!(else|endloop|endif))[a-z0-9\.\|_]+)\s%\}/si
之前包含else
,endloop
和endif
关键字的方括号将每个字符视为例外。在这里,他们被视为整个字符串。