gpt4 book ai didi

java - 单行(DOTALL)正则表达式匹配比我想要的更多

转载 作者:行者123 更新时间:2023-12-01 07:26:13 24 4
gpt4 key购买 nike

我在单行正则表达式(或 Java 人员的 DOTALL)方面遇到了一些问题。我想在文档上匹配这些设置指令中的每一个。我的正则表达式是这样的:

\{\%\s*set\s+(\S+)\s*\%\}.+\{\%\s*endset\s*\%\}

我要匹配的目标内容如下所示:

{% set var1 %}
some multiline
really long content
{% endset %}

<other random code>

{% set var2 %}
some multiline
other really long content
{% endset %}

此正则表达式的问题在于,第一个匹配项(并且仅在整个文档中)从第二个代码块开始于 {% set var1 %} 并于 {% endset %} 结束。我尝试使用前向和后向,但没有结果。

有什么建议吗?

谢谢

最佳答案

您需要在 .+ 后面加上 ? 以获得 non-greedy 匹配。

\{%\s*set\s+(\S+)\s*%\}.+?\{%\s*endset\s*%\}
^

注意:您不需要转义%,因为它不被视为具有特殊含义的字符。

Live Demo

关于java - 单行(DOTALL)正则表达式匹配比我想要的更多,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24193672/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com