我需要從網頁的HTML代碼中刪除所有Java腳本標記以及兩者之間的內容和樣式標記。到目前爲止,我已經提出了這個表達式:我需要使用正則表達式和JRegex刪除Java腳本標記
"(<[ \r\n\t]*script([ \r\n\t>]|>){1,}([ \r\n\t]|.)*?</[ \r\n\t]*script[ \r\n\t]*>)|(<[ \r\n\t]*noscript([ \r\n\t>]|>){1,}([ \r\n\t]|.)*?</[ \r\n\t]*noscript[ \r\n\t]*>)|(<[ \r\n\t]*style([ \r\n\t>]|>){1,}([ \r\n\t]|.)*?</[ \r\n\t]*style[ \r\n\t]*>)"
我使用JRegex庫來處理正則表達式。當我在任何正則表達式測試儀測試它,它工作得很好,但是當我運行我的程序 - 這個錯誤報告這一切崩潰下來:
Exception in thread "Thread-0" java.lang.StackOverflowError
at java.util.regex.Pattern$BranchConn.match(Unknown Source)
at java.util.regex.Pattern$BmpCharProperty.match(Unknown Source)
at java.util.regex.Pattern$Branch.match(Unknown Source)
at java.util.regex.Pattern$GroupHead.match(Unknown Source)
at java.util.regex.Pattern$LazyLoop.match(Unknown Source)
at java.util.regex.Pattern$GroupTail.match(Unknown Source)
at java.util.regex.Pattern$BranchConn.match(Unknown Source)
at java.util.regex.Pattern$CharProperty.match(Unknown Source)
at java.util.regex.Pattern$Branch.match(Unknown Source)
at java.util.regex.Pattern$GroupHead.match(Unknown Source)
at java.util.regex.Pattern$LazyLoop.match(Unknown Source)
..................................
它不斷持續下去。如果有人能給我一個關於這個問題的建議 - 我會非常感激。
首先是「([\ r \ n \ t] |)」是沒有意義的。使用DOT_ALL或其他。 「([\ r \ n \ t>] |>)」也沒有意義。把「>」放在 – takoi 2010-06-15 10:43:02
之外你讓我走上了正軌,謝謝! – piotr 2010-06-15 12:52:05
這不是您正在使用的JRegex,它是Java的原生正則表達式包。 JRegex是Java在JDK 1.4中擁有自己的正則表達式之前創建的第三方庫之一。 – 2010-06-15 22:17:09