我有以下代码,这些代码可从正常工作的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/