正则表达式中或中的问题

发布于 2024-12-04 17:28:26 字数 585 浏览 1 评论 0原文

我有这个正则表达式:

/\{%\s([^else|endloop|endif][a-z0-9\.\|_]+)\s%\}/si

我在 preg_replace 中使用这个正则表达式。 这个标记:

{# 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]

我做错了什么?

I have this Regexp:

/\{%\s([^else|endloop|endif][a-z0-9\.\|_]+)\s%\}/si

I use this regexp in preg_replace.
And this markup:

{# 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; %}

Why this regexp is not working for {% item.text %} but works with other?
I think that I made some mistake here [^else|endloop|endif]

What I'm doing wrong?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

ぽ尐不点ル 2024-12-11 17:28:26

我想您可能想要:

/\{%\s((?!(else|endloop|endif))[a-z0-9\.\|_]+)\s%\}/si

之前包含 elseendloopendif 关键字的方括号将每个单独的字符视为例​​外。在这里它们被视为整个字符串。

I think you may intend:

/\{%\s((?!(else|endloop|endif))[a-z0-9\.\|_]+)\s%\}/si

The square brackets previously containing the else, endloop and endif keywords treats each individual character as an exception. Here they are treated as whole strings.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文