[Python-de] Reguläre Ausdrücke: wiederholte Gruppen mit non-greedy-Inhalt

Yves Forkl Y.Forkl at srz.de
Don Mar 18 14:23:45 CET 2004


Hallo!

Ich habe ein kniffliges Problem mit Regulären Ausdrücken zu bieten: von 
einer beliebig wiederholbaren Gruppe mit non-greedy-Inhalt kommt nur die 
letzte Instanz ins Match object. Der Code...

import re
pat = re.compile( "(<.*?/>)+" )
pat.search( "<a/><b/>" ).groups()

...liefert...

('<b/>',)

...obwohl er aus meiner Sicht ('<a/>','<b/>') liefern sollte. Das 
passiert nur bei Inhalt mit non-greedy-Operator; ohne wird natürlich 
alles nur eine einzige Gruppe. Aufzählen der Gruppen statt beliebig 
wiederholen geht zwar, ist aber natürlich bei variabler Zahl an Gruppen 
im String nicht praktikabel.

Hat jemand eine Erklärung dafür? Oder einen Vorschlag, wie ich auf 
andere Weise alle so aufgebauten Gruppen in das Match object kriege? 
(Von der Verwendung von Modulen wie htmllib o.ä. zum Parsen von HTML mal 
abgesehen.)

   Mit besten Grüßen

      Yves Forkl

--
Yves Forkl <Y.Forkl at srz.de> · Tel. 030 / 7 53 01 - 335
Satz-Rechen-Zentrum Berlin · http://www.srz.de/
- Firmengruppe BessCom · http://www.besscom.de/ -