我使用这个正则表达式:
.*[hH]([1-9])\.\s*(.*)\s*
使用 Java 和 Matcher.find()
方法。
在长文本上,此正则表达式需要花费大量时间才能找到结果。
如何优化正则表达式?有人可以向我提出一些优化的正则表达式吗?
你可以使用这个:
[hH]([1-9])\.\s*+(\S+)
其中\S
是不是白色字符的全部(\s
的否定)
所有格量词*+
用于禁止回溯。
正如伊恩·罗伯茨(Ian Roberts)在他的评论中注意到的那样,领先的(.*)
在这里似乎毫无用处。
您应该在尝试对长文本运行正则表达式之前对其进行测试。
String longText=...
if(longText.matches(myRegex)) {
//Matcher.find
}
这样你就不会浪费你的时间。
但是,如果您真的面对长文本,我可以建议您使用功能强大的 html 解析器 Jsoup 吗?