我需要从网页的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