Voges hat geschrieben:Ist der RegExp genügsam (non-greedy, mit Fragezeichen), dann begnügt er sich mit dem ersten ">, dass er findet und alles von "Die Heilige Suche" bis "Meso" landet in der 1. Gruppenklammer. Das ist das, was Du nicht willst, wenn ich das richtig verstanden habe.
Da ist genau mein Problem, und auch das warum wir und missverstehen... ist mir aber erst jetzt aufgefallen, weil ich wieder was vergessen hatte
. Hinter dem einem Ausdruck stehen noch andere, ich versuch das mal in einem Beispiel, indem ich den Suchstring erweitere.
Code: Alles auswählen
text="""<td><a href="/cgi-bin/info.pl?sid=EEDFMVQFIEXGQDTR&alli=R42">Die Heilige Suche</a> [R42]</td></tr><tr><td>Metaallianz</td><td><a href="/cgi-bin/info.pl?sid=EEDFMVQFIEXGQDTR&meta=FAA">Foederation Auserwaehlter Allianzen</a> [FAA]</td></tr><tr><th colspan=2>Planeten (insgesamt 31)</th></tr><tr><td>Name (Koordinaten)</td><td>Punkte</td></tr><tr><td><a href="/cgi-bin/info.pl?sid=EEDFMVQFIEXGQDTR&coord=555763A">Meso</a> (555:763:A)</td><td>253</td></tr><tr><td><a href="/cgi-bin/info.pl?sid=EEDFMVQFIEXGQDTR&coord=550763A">Nummer 2</a> (550:763:A)</td><td>22</td></tr>"""
Jetzt (ich hol nochmal ganz vom Anfang an aus) kommt mein Problem, dass er "zuviel" zurückgibt, aber ich nicht verstehe warum. Nun liefert er nämlich das (wobei der letztere Wert wieder ok ist):
Code: Alles auswählen
('Die Heilige Suche</a> [R42]</td></tr><tr><td>Metaallianz</td><td><a href="/cgi-bin/info.pl?sid=EEDFMVQFIEXGQDTR&meta=FAA">Foederation Auserwaehlter Allianzen</a> [FAA]</td></tr><tr><th colspan=2>Planeten (insgesamt 31)</th></tr><tr><td>Name (Koordinaten)</td><td>Punkte</td></tr><tr><td><a href="/cgi-bin/info.pl?sid=EEDFMVQFIEXGQDTR&coord=555763A">Meso', '555:763:A', '253'), ("Nummer 2", "550:763:A","22")]
Weil mehrere dieser Werte hintereinanderstehen können, möchte ich nicht einfach ein "*" benutzten. Scheinbar hab ich etwas in meinem RE zweideutig ausgelegt, diese Stelle finde ich jedoch nicht. Mit "(.+?)</a> \(([\dA-Z:]+?)\)" sollte ja eigentlich der Name "Meso" und die Koordinaten "555:763:A" gefangen werden. In der Anwendung übersieht er aber das "</a>" in Verbindung mit dem "+?" in diesem Teil. Denn wie man im Ergebniss sieht, ist da ja "Die Heilige Suche</a>" das eigentliche Schlussglied drin. Hier sollte er mit dem ersten Gruppenteil aufhöhren, und versuchen den 2. zu finden. Diesen kann er meiner Meinung nach aber nicht finden, weil eigentlich die Runden Klammern aus "\(([\dA-Z:]+?)\)" nicht vorhanden sind (zum Vergelich die Stelle die ich meine: "Die Heilige Suche</a> [R42]"). Tja, und wenn er das nicht finden kann, sollte er weiter unten sein Glück versuchen und dann in """<td><a href="/cgi-bin/info.pl?sid=EEDFMVQFIEXGQDTR&coord=555763A">Meso</a> (555:763:A)</td><td>253</td>""" Erfolg haben. Ich hoffe, du verstehst nun was ich meine
. Was hab ich falsch gemacht?