Java:我有一大串 html,需要提取 href ="..."文本

标签 java html regex html-parsing

我有这个包含大量 html 的字符串,我试图从字符串的 href="..."部分提取链接。 href 可以是以下形式之一:

<a href="..." />
<a class="..." href="..." />

我对正则表达式没有真正的问题,但出于某种原因,当我使用以下代码时:

        String innerHTML = getHTML(); 
  Pattern p = Pattern.compile("href=\"(.*)\"", Pattern.DOTALL);
  Matcher m = p.matcher(innerHTML);
  if (m.find()) {
   // Get all groups for this match
   for (int i=0; i<=m.groupCount(); i++) {
    String groupStr = m.group(i);
    System.out.println(groupStr);

   }
  }

有人能告诉我我的代码有什么问题吗?我在 php 中做了这些东西,但在 Java 中我不知何故做错了......发生的事情是每当我尝试打印它时它都会打印整个 html 字符串......

编辑:让每个人都知道我正在处理什么样的字符串:

<a class="Wrap" href="item.php?id=43241"><input type="button">
    <span class="chevron"></span>
  </a>
  <div class="menu"></div>

每次我运行代码时,它都会打印整个字符串...这就是问题所在...

关于使用 jTidy...我正在研究它,但如果知道在这种情况下出了什么问题也会很有趣...

最佳答案

.* 

这是一个贪婪的操作,将接受任何字符,包括引号。

尝试这样的事情:

"href=\"([^\"]*)\""

关于Java:我有一大串 html,需要提取 href ="..."文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1670593/

相关文章:

java - NoClassDefFoundError 仅在我的机器上

java - 调试 JMock 期望

html - 嵌套选项卡之间的空间

ruby - 如何使用正则表达式解析网页中的文章?

regex - 在正则表达式中使用\t 似乎不适用于所有选项卡

使用 GL_ELEMENT_ARRAY_BUFFER 时的 Java GLFW 段错误

java - Scoreoid 和 Java,HTTPS 不再工作

javascript - 到达方 block 时跳跃算法不起作用

javascript - 如何在 html 中的 select(Multiple) 的指定索引处插入选项?

ios - RegEx 在 RegexR 中在线工作,但在 NSRegularExpression 中无法在 iOS 上初始化