从HTML中获取href标记

时间:2014-05-17 14:18:24

标签: java html regex

我有以下代码从正确运行的XML中获取一个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>

如何通过修改正则表达式来实现这一目标?

1 个答案:

答案 0 :(得分:1)

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

(?is)(<a[^>]+href\s*=\s*(['"])([^'"]+)\2[^>]*>).*?</a>
  1. 第0组是整场比赛:<a href="http://...">some text</a>
  2. 第1组是开场代码:<a href="http://...">
  3. 第2组是我添加的内容,以确保您的开场报价与结束报价相同。忽略它。 4第3组是网址:http://...
  4. 查看this demo

    中的群组

    如你所知,要在Java中使用,你需要转义一些字符。类似的东西:

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