Seite 1 von 1

Verfasst: Mittwoch 7. Februar 2007, 13:39
von birkenfeld
sape hat geschrieben: c), d) Brauchen tut man die Klammern immer wenn man das Ergebnis des matches mit drin haben will:
Den Inhalt, ja. Aber wozu brauchst du die Sternchen?

Verfasst: Mittwoch 7. Februar 2007, 14:44
von mitsuhiko
Ich sags gleich. Mit Regular Expressions geht sowas nicht. rst erlaubt rekursive Konstrukte.

Verfasst: Mittwoch 7. Februar 2007, 16:04
von PmanX
Hallo,

Code: Alles auswählen

>>> p=re.compile(r'^(\w+)\n\s+(\S+)\s*(::)\s*\n\n(?:\s+(\w+)\n)*\n')
>>> m=p.search(source)
>>> m.groups()
('test', 'foobar', '::', 'test2')
>>> m.group(0)
'test\n  foobar ::\n\n   test\n   test2\n\n'
match zwar, fängt aber nicht alles ein.

Wenn ich nicht irre, brauchst Du Multiline nur, wenn Du Zeilenweise liest, der Match sich aber über mehrere Zeilen streckt.
ich muß mal den *Friedl* ausbuddeln.
Edit (PmanX): Multiline braucht man auch, wenn die Stringanker _^ und $_ logische Zeilen erkennen soll.

Edit (Leonidas): Code-Highlighting eingeschaltet.
Edit (PmanX): Besser. In Zukunft schalte ich noch VERBOSE ein. Er schluckt ja die Ausgaben :idea:

Verfasst: Donnerstag 8. Februar 2007, 08:17
von sape
birkenfeld hat geschrieben:Den Inhalt, ja. Aber wozu brauchst du die Sternchen?
War nur ein Beispiel um die Wirkungsweise von () darzustellen.