RegEx für substrings als Liste

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
KC853
User
Beiträge: 5
Registriert: Freitag 12. September 2008, 20:24

Sonntag 14. September 2008, 20:05

Nabend,

in einem Multiline String bin ich auf der Suche nach allen Substrings die in doppelten eckigen Klammern [[xxxxxx]] eingeschlossen sind. Es können auch mehrere pro Zeile auftreten. Ein

Code: Alles auswählen

re.compile('\[\[(.*)\]\]', re.I).findall(data)
findet natürlich alles vom ersten "[[" der zeile bis zum letzten "]]". Wenn nur ein Substring pro Zeile da ist tuts dann also, aber wenn mehrere Substrings pro Zeile existieren tuts nicht.

Wie müsste ich also umformen/ergänzen um das zu erreichen?

Gruß KC853
Redprince
User
Beiträge: 128
Registriert: Freitag 22. Oktober 2004, 09:22
Wohnort: Salzgitter
Kontaktdaten:

Sonntag 14. September 2008, 20:37

Dein RegEx ist greedy. Wenn du statt .* ein .*? nutzt, ist der entsprechende Teil nicht mehr so gierig ;)
I am not part of the allesburner. I am the [url=http://allesburner.de]allesburner[/url].
KC853
User
Beiträge: 5
Registriert: Freitag 12. September 2008, 20:24

Montag 15. September 2008, 06:53

Oh Mann, dieses greedy hatte ich zu den fortgeschrittenen Techniken gezählt und nicht weitergelesen ...

RegEx sind echt ne mächtige Waffe.

Gruß KC853
Leonidas
Administrator
Beiträge: 16024
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Montag 15. September 2008, 10:17

KC853 hat geschrieben:RegEx sind echt ne mächtige Waffe.
Scheinen auf den ersten Blick so, aber Pythons Regex haben dann nun noch etwas Lookahead und negatives Lookahead und das war dann im großen und ganzen schon alles. Bei Perl kann man noch einige Sachen mehr machen, aber das sind schon weniger Reguläre Ausdrücke und mehr in Richtung Programmiersprache.
My god, it's full of CARs! | Leonidasvoice vs Modvoice
Antworten