gpt4 book ai didi

javascript - 正则表达式使匹配不那么贪婪

转载 作者:行者123 更新时间:2023-12-02 16:24:01 25 4
gpt4 key购买 nike

我有以下字符串:

<h2><!--DEL-->This is the title<!-- /DEL --><!-- ADD--><% title %><!--/ADD--></h2>

<!--ADD-->
<strong>some emphasised text</strong>
<!--/ADD-->

<ul>
<!--ADD--><% for each item in list %> <!--/ADD--> <li><!--DEL-->This is the first item in the list<!--/DEL--><!--ADD--><% item %><!--/ADD--></li><!--ADD--><% end for %><!-- /ADD -->
<!--DEL--><li>This is the second item in the list</li><!--/DEL -->
<!--DEL--><li>This is the <strong>third</strong> item in the list</li><!-- /DEL -->
</ul>

通过正则表达式,我希望它产生以下结果:

<h2><% title %></h2>

<strong>some emphasised text</strong>

<ul>
<% for each item in list %><li><% item %></li><% end for %>
</ul>

我正在使用的正则表达式:

template = template.replace(/<\!--\s*?DEL\s*?-->(.*)<\!--\s*?\/DEL\s*?-->/gm, "");
template = template.replace(/<\!--\s*?ADD\s*?-->(.*)<\!--\s*?\/ADD\s*?-->/gm, "$1");

但目前它正在产生:

<h2><% title %></h2>
<ul>
<% for each item in list %><!-- /ADD --><li><!-- ADD --><% item %><!-- /ADD --></li><!-- ADD --><% end for %>
</ul>

问题1:它似乎不喜欢同一行有多个匹配项(它似乎将它们视为一个大匹配项)。

问题 2:如何使其跨多行匹配?我知道 .字符不允许换行符,但我使用/m 修饰符(这似乎不起作用)。

任何想法将不胜感激!

谢谢。

最佳答案

对于问题2,js中没有DOT_ALL修饰符。但 use 可以使用结构 [\s\S] 而不是实际匹配所有符号的点。所以最后你的正则表达式将是

/<\!--\s*?DEL\s*?-->([\s\S]*?)<\!--\s*?\/DEL\s*?-->/gm

关于javascript - 正则表达式使匹配不那么贪婪,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28865223/

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