我需要从网页的 HTML 代码中删除所有 Java Script 标签以及中间的内容和样式标签。到目前为止,我已经想出了这个表达式:
"(<[ \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)
..................................
而且它会永远持续下去。如果有人能给我这方面的建议 - 我将非常感激。
为什么不使用 HTML 解析器并删除 <script>
和<style>
节点?
我是一名优秀的程序员,十分优秀!