Seite 1 von 1

RegEx für substrings als Liste

Verfasst: Sonntag 14. September 2008, 20:05
von KC853
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

Verfasst: Sonntag 14. September 2008, 20:37
von Redprince
Dein RegEx ist greedy. Wenn du statt .* ein .*? nutzt, ist der entsprechende Teil nicht mehr so gierig ;)

Verfasst: Montag 15. September 2008, 06:53
von KC853
Oh Mann, dieses greedy hatte ich zu den fortgeschrittenen Techniken gezählt und nicht weitergelesen ...

RegEx sind echt ne mächtige Waffe.

Gruß KC853

Verfasst: Montag 15. September 2008, 10:17
von Leonidas
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.