Java: у меня есть большая строка html и мне нужно извлечь текст href = «…»

У меня есть эта строка, содержащая большой кусок 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 ... Я на нем, но было бы интересно узнать, что пошло не так и в этом случае ...

Ответы на вопрос(7)

Ваш ответ на вопрос