0

我想匹配未注释掉的脚本标签。为此,我试图使用这个正则表达式:

(?is)((?<!<!--(?!-->))<script[^>]*>)

逻辑是要求它<script[^>]*>前面没有<!--,反过来,后面也没有-->,但显然(?!-->)不会停在它之后,而是<script[^>]*>一直到-->它之后。我如何告诉它停在<in <script...

4

1 回答 1

0

为此,您可以搜索之前和之后的所有评论内容,作为替代,搜索脚本标签并将此子模式放入捕获组中:

<!--(?>[^-]+|-(?!->))*-->|(?i)(<script[^>]*>(?>[^<]+|<(?!/script>))*</script>)

然后结果在捕获组中。

如果要使用该replaceFirst()方法,可以使用:

图案

(?i)((?><!--(?>[^-]+|-(?!->))*-->|[^<]+|<(?!script))*)(<script[^>]*>(?>[^<]+|<(?!/script>))*</script>)

替换

$1 ### what you want ###

(或在回调函数中使用捕获组 2)

于 2013-10-13T22:37:19.213 回答