谷歌搜索结果的正则表达式在android中不起作用

时间:2017-01-15 23:32:15

标签: java android regex web-scraping

我尝试使用此代码搜索谷歌搜索结果

 Pattern p = Pattern.compile("<h3.*?><a.*?href=\"(.*?)\".*?</h3>");
        Matcher m = p.matcher(html);

在android studio中它的工作,但在Android设备上需要太多时间......

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

这是由于你的正则表达式导致了灾难性的回溯。

将第一个.*?添加到原子组会有所帮助。 原子组可防止该特定组中的回溯。

(?><h3.*?>)<a.*?href=\"(.*?)\".*?<\/h3>

请参阅https://regex101.com/r/hl2ARK/1并尝试删除第一组以复制原始正则表达式。

您可以在此处找到关于营养回溯所需了解的所有内容http://www.regular-expressions.info/catastrophic.html