正则表达式在HTML注释之间不匹配

时间:2019-06-14 21:29:56

标签: regex

我有一个正则表达式,我想匹配某个模式。但是,如果HTML注释块之间存在该模式,我不希望它与该模式匹配

我目前拥有的是:

(?<!<!--)pattern(?!-->)

但是,仅当模式恰好位于注释块之间时才有效,而在诸如以下情况下则无效:

<!-- foo pattern -->

但如果我这样做:

(?<!<!--.*)pattern(?!-->)

然后这种情况不起作用:

<!-- some commented out stuff --> pattern

我想我是否可以表达(除->以外的所有内容)*?在负面的印象中可以正常工作,但是我不确定语法是否正确,或者是否允许。

1 个答案:

答案 0 :(得分:0)

我的猜测是,您的原始表达式可以稍加修改就可以了,我们可能希望使用类似于以下的表达式:

(?<=<!--).*pattern.*(?=-->)

Demo

并且如果我们希望捕获或不捕获pattern附近的任何东西,这些可能会引起关注:

(?<=<!--).*(pattern).*(?=-->)
(?<=<!--)(.*pattern.*)(?=-->)
(?<=<!--)(.*)(pattern)(.*)(?=-->)
(?<=<!--)(?:.*)(pattern)(?:.*)(?=-->)