Java: ich habe eine große html-string und müssen extrahieren href="..." text

Habe ich in diesem string, der einen großen Teil der html-und bin versucht, extrahieren Sie den link aus dem href="..." - Teil der Zeichenfolge. Href könnte in einer der folgenden Formen:

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

Ich habe nicht wirklich ein problem mit regex, aber für einige Grund, wenn ich den folgenden code verwenden:

        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);

   }
  }

Kann mir jemand sagen, was falsch ist mit meinem code? Ich habe dieses Zeug in php, sondern in Java bin ich irgendwie etwas falsch... Was passiert ist, dass es druckt den gesamten html-string, Wann immer ich versuche, es zu drucken...

EDIT: Nur, damit jeder weiß, welche Art von string ich beschäftige mich mit:

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

Jedesmal, wenn ich den code ausführen, druckt es die ganze Zeichenfolge... das ist das problem...

Und über die Verwendung von jTidy... ich bin auf es, aber es wäre interessant zu wissen, was falsch gelaufen ist in diesem Fall auch...

Was genau ist das problem? Bekommst du eine Fehlermeldung, oder das falsche Ergebnis?
Oops... Sorry... Aktualisiert die post. Aber das problem war, dass es nicht geben Sie mir die links, aber eher drucken die ganze Schnur wieder...
"Kann mir jemand sagen, was falsch ist mit meinem code?" - ja, Sie sind, versucht die RegEx für etwas, das es nicht verwendet werden sollte. Verwenden Sie einen HTML-DOM-parser, wie jTidy (link in BalusC Antwort unten).
Einige Leute, wenn Sie mit einem problem konfrontiert, denken, "ich weiß, ich werde Sie reguläre Ausdrücke verwenden." Nun haben Sie zwei Probleme.

InformationsquelleAutor Legend | 2009-11-03

Schreibe einen Kommentar