RegularExpression für <td> </td> Tag mit Zahl in der Mitte

Dunas

Erfahrenes Mitglied
Hallo,
ich versuche momentan das Problem das ich keine Regulärenausdruck für folgendes Problem finde.

Folgende Möglichkeiten sollen gefunden werden:

  1. <td>6248</td>
  2. <td class="red">0</td>

Das Problem ist das die <td> Tags mehrfach hintereinander auftauchen und ich nur die Zahl haben möchte, die zwischen den einzellnen Tags steht.

Ich habe es versucht mit :

Code:
String ausdruck = "<td.+([0-9]+)?</td>";
String ausdruck "<td.+([0-9]{1,})?</td>";
Mehr fällt mir momentan nicht ein.

Wäre wunderbar wenn jemand da eine schnelle Lösung hätte.

Danke Dunas

Kompletter Code:

Code:
String eingabe = "<td class=\"red\">0</td><td>6248</td>;

		String ausdruck = "<td.+([0-9]{1,})?</td>";
		
		Matcher m = Pattern.compile(ausdruck).matcher(eingabe);

while(m.finde())
{

System.out.println("gefunden: " + m.group(1));

}
 
Keine Ahnung wer sowas verbockt, aber scheinbar ist das tatsächlich so.

Ich habe den Ausdruck natürlich nicht getestet, weil ich weiß, dass er bei richtigen(!) Interpretern entsprechend funktioniert, da dort "greedy" erst zugeschaltet werden muss.
 
Keine Ahnung wer sowas verbockt, aber scheinbar ist das tatsächlich so.

Ich habe den Ausdruck natürlich nicht getestet, weil ich weiß, dass er bei richtigen(!) Interpretern entsprechend funktioniert, da dort "greedy" erst zugeschaltet werden muss.
Du irrst dich. Das ist in der Regel nicht so, man muss eigentlich immer extra non-greedy Quantoren verwenden um keinen gierigen Match zu erreichen. In jedem Programm das reg. Ausdrücke verwendet das ich kenne (sed, grep, Perl, Python, .NET, Java(Script), PHP, Emacs etc). ist das so.

Gruß
 
Oh das stimmt. Und da ich das eigentlich täglich verwendet habe (sed, awk, etc) hätte ich es besser wissen sollen. Ich habe mit den Jahren per default noingreedy (sed /g) genutzt... Ich sollte mir ernsthaft Gedanken machen, mich zur Ruhe zu setzen.
 
Zurück