我希望匹配未注释掉的脚本标记。为此我试图使用这个正则表达式:
(?is)((?<!<!--(?!-->))<script[^>]*>)
逻辑是要求<script[^>]*>
<!--
之前没有-->
,而(?!-->)
后面没有<script[^>]*>
,但显然-->
并未停留在<
{1}}然后一直到<script...
。如何告诉它在{{1}}的{{1}}停止?
答案 0 :(得分:0)
为此,您可以在搜索脚本标签之前和之后搜索所有评论的内容,并将此子模式放在捕获组中:
<!--(?>[^-]+|-(?!->))*-->|(?i)(<script[^>]*>(?>[^<]+|<(?!/script>))*</script>)
然后结果出现在捕获组中。
如果您想使用replaceFirst()
方法,可以使用:
<强>图案强>
(?i)((?><!--(?>[^-]+|-(?!->))*-->|[^<]+|<(?!script))*)(<script[^>]*>(?>[^<]+|<(?!/script>))*</script>)
<强>替换强>
$1 ### what you want ###
(或在回调函数中使用捕获组2)