我使用这个正则表达式:
.*[hH]([1-9])\\.\\s*(.*)\\s*
使用带Matcher.find()
方法的java。
在长篇文章中,这个正则表达式需要花费大量时间才能找到结果。
如何优化正则表达式?有人可以向我推荐一些优化的正则表达式吗?
答案 0 :(得分:2)
您可以使用:
[hH]([1-9])\\.\\s*+(\\S+)
其中\\S
不是白色字符(\\s
的否定)
Possessive quantifiers *+
用于禁止回溯。
正如伊恩·罗伯茨在评论中注意到的那样,领先的(.*)
在这里似乎毫无用处。
答案 1 :(得分:0)
你应该在试图对它运行正则表达式之前测试长文本。
String longText=...
if(longText.matches(myRegex)) {
//Matcher.find
}
这样你就不会浪费你的时间。
但是,如果您真的遇到longt文本,我建议您使用功能强大的html解析器 Jsoup吗?