我知道「不要使用html的正則表達式」,但嚴重的是,加載整個html解析器並不總是一個選項。在正則表達式中匹配html標記內容
所以,這裏是該方案
<script...>
some stuff
</script>
<script...>
var stuff = '<';
anchortext
</script>
如果你這樣做:
<script[^>]*?>.*?anchor.*?</script>
你會從第一個腳本標記在第二塊/腳本捕捉。有沒有辦法做一個。*?但通過替換。與一個匹配塊,像這樣的:
<script[^>]*?>(^</script>)*?anchor.*?</script>
我看着負向lookaheads等,但我不能得到的東西正常工作。通常我只是使用[^>] *?以避免跑過關閉塊,但在此特定示例中,腳本內容中包含「<」,並且在到達錨點文本之前停止匹配。
爲了簡化,我需要[^ z] *之類的東西?但不是單個字符或字符範圍,我需要一個捕獲組來匹配一個字符串。
.*?(?!z) doesn't have the same effect as [^z]*? as I assumed it would.
這裏是我卡在其中:http://regexr.com?34llp
http://stackoverflow.com/a/1732454/500202 – Izkata 2013-04-24 19:21:40
在StackOverflow上覆制了大約一百萬個其他大致相同的問題。 – Adrian 2013-04-24 19:24:35
那麼你想要捕獲什麼? – anubhava 2013-04-24 19:27:22