我有以下代码,这些代码可从正常工作的XML获取a href标签的网址:

Pattern p = Pattern.compile("<a[^>]+href\\s*=\\s*['\"]([^'\"]+)['\"][^>]*>");
Matcher m = p.matcher(xmlString);
while (m.find())
    imagesURLs.add(m.group(1));


我有以下几点:

<a href="http://...">some text</a>


上面的代码让我在<a href="http://...">中找到m.group(0),在http://...中获得m.group(1)

我也想获得完整的<a href="http://...">some text</a>

如何通过修改正则表达式来实现?

最佳答案

关于使用正则表达式解析html的所有免责声明:您可以使用此

(?is)(<a[^>]+href\s*=\s*(['"])([^'"]+)\2[^>]*>).*?</a>



组0是整个比赛:<a href="http://...">some text</a>
第1组是开始标签:<a href="http://...">
第2组是我添加的,以确保您的开盘报价与结束报价相同。忽略它。
4组3是URL:http://...


查看this demo中的组

如您所知,要在Java中使用,您需要转义一些字符。就像是:

Pattern p = Pattern.compile("(?is)(<a[^>]+href\\s*=\\s*(['\"])([^'\"]+)\\2[^>]*>).*?</a>");

关于java - 从HTML获取href标签,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23712352/

10-12 12:34
查看更多