我想匹配沒有被註釋掉的腳本標籤。爲此我試圖用這個表達式:匹配沒有被註釋掉的html標籤
(?is)((?<!<!--(?!-->))<script[^>]*>)
邏輯是要求它<script[^>]*>
不是<!--
這反過來前面,後面沒有-->
,但顯然(?!-->)
不會在<script[^>]*>
停止,之後一路去-->
。如何告訴它在停止<script...
?
我想匹配沒有被註釋掉的腳本標籤。爲此我試圖用這個表達式:匹配沒有被註釋掉的html標籤
(?is)((?<!<!--(?!-->))<script[^>]*>)
邏輯是要求它<script[^>]*>
不是<!--
這反過來前面,後面沒有-->
,但顯然(?!-->)
不會在<script[^>]*>
停止,之後一路去-->
。如何告訴它在停止<script...
?
要做到這一點,你可以前搜索所有評論內容,而此前,作爲交替,搜索腳本標籤,並把這個子模式中捕獲組:
<!--(?>[^-]+|-(?!->))*-->|(?i)(<script[^>]*>(?>[^<]+|<(?!/script>))*</script>)
那麼結果是捕獲組。
如果你想使用replaceFirst()
方法,你可以使用:
模式
(?i)((?><!--(?>[^-]+|-(?!->))*-->|[^<]+|<(?!script))*)(<script[^>]*>(?>[^<]+|<(?!/script>))*</script>)
更換
$1 ### what you want ###
(或使用捕獲組2一個回調函數)
我認爲[this](http://stackoverflow.com/a/1732454/1702990)鏈接可能在這種情況下是強制性的。 – Sinkingpoint
補貨!我會成爲第一個和那個鏈接合作的人:) :) – Josh
如果我要求正則表達式捕獲所有不在「b」和「c」之間的「a」,它會有幫助嗎? – makc