我想使用以下Java代码提取HTML-body-Tags中的所有文本:
Pattern.compile(".*<\\s*body\\s*>(.*?)<\\s*/\\s*body\\s*>.*", Pattern.DOTALL);
...
matcher.find() ? matcher.group(1) : originalText
对于html工作正常,但是对于不包含任何html(并且没有任何body元素)的较大文本,e.G。更大的堆栈跟踪调用 matcher.find()会占用大量时间。
有谁知道原因是什么?如何使这个正则表达式更高效?
提前致谢!
答案 0 :(得分:2)
reg exp现在是:
<\\s*?body\\s*?>(.*?)<\\s*?/\\s*?body\\s*?>
表达式开头和结尾处的.*
已被删除,现在它正常且快速地运行。此外,所有量词现在都不贪婪。
感谢提供有用的评论!