我尝试使用此代码搜索谷歌搜索结果
Pattern p = Pattern.compile("<h3.*?><a.*?href=\"(.*?)\".*?</h3>");
Matcher m = p.matcher(html);
在android studio中它的工作,但在Android设备上需要太多时间......
我该如何解决这个问题?
答案 0 :(得分:0)
这是由于你的正则表达式导致了灾难性的回溯。
将第一个.*?
添加到原子组会有所帮助。
原子组可防止该特定组中的回溯。
(?><h3.*?>)<a.*?href=\"(.*?)\".*?<\/h3>
请参阅https://regex101.com/r/hl2ARK/1并尝试删除第一组以复制原始正则表达式。
您可以在此处找到关于营养回溯所需了解的所有内容http://www.regular-expressions.info/catastrophic.html