gpt4 book ai didi

regex - 使用 Regex 捕获 HTML 注释但忽略特定注释

转载 作者:行者123 更新时间:2023-12-01 11:06:05 24 4
gpt4 key购买 nike

我想捕获除特定评论之外的 html 评论,即

 <!-- end-readmore-item --> 

目前,我可以使用下面的正则表达式成功捕获所有 HTML 评论,

(?=<!--)([\s\S]*?)-->

为了忽略指定的注释,我尝试了前瞻和后视断言,但作为 Regex 高级级别的新手,我可能遗漏了一些东西。

到目前为止,我已经能够使用 lookarounds 设计以下正则表达式,

^((?!<!-- end-readmore-item -->).)*$

我希望它忽略 end-readmore-item 评论,只捕获其他评论,例如,

<!-- Testing-->

但是,它不仅完成了工作,而且还捕获了我也希望忽略的常规 HTML 标记。

我一直在使用下面的html代码作为测试用例,

<div class="collapsible-item-body" data-defaulttext="Further text">Further 
text</div>
<!-- end-readmore-item --></div>
</div>
&nbsp;<!-- -->
it only should match with <!-- --> but it's selecting everything except <!--
end-readmore-item -->
the usage of this is gonna be to remove all the HTML comments except <!--
end-readmore-item -->

最佳答案

您可以使用以下模式:

<!--(?!\s*?end-readmore-item\s*-->)[\s\S]*?-->

Regex101 demo .

分割:

<!--                    # Matches `<!--` literally.
(?! # Start of a negative Lookahead (not followed by).
\s* # Matches zero or more whitespace characters.
end-readmore-item # Matches literal string.
\s* # Matches zero or more whitespace characters.
--> # Matches `-->` literally.
) # End of the negative Lookahead.
[\s\S]*? # Matches any character zero or more time (lazy match),
# including whitespace and non-whitespace characters.
--> # Matches `-->` literally.

这基本上意味着:

Match <!-- that is not followed by [a whitespace* + end-readmore-item + another whitespace* + -->] and which is followed by any amount of characters then immediately followed by -->.


* 可选空格重复零次或多次。

关于regex - 使用 Regex 捕获 HTML 注释但忽略特定注释,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55507769/

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