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

Fritz Cizmarov fritz at sol.at
Don Mar 18 16:35:06 CET 2004


Am Thu, 18 Mar 2004 14:23:45 +0100
Schrieb Yves Forkl <Y.Forkl at srz.de>:

> 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.
> 

Hi Yves,

pat.findall("<a/><b/>")

...liefert...

['<a/>', '<b/>']



Gruß

Fritz