[Python-de] Probleme mit regulären Ausdruck

Andreas Pakulat apaku at gmx.de
Fr Okt 14 17:07:39 CEST 2011


On 14.10.11 16:50:07, Florian Lindner wrote:
> Hallo,
> 
> ich probiere einen regulären Ausdruck zusammenzubauen.
> 
> re.match(r"(.+)\.(.+)_(.+)", "A.B_C").groups()
> -> ('A', 'B', 'C')
> 
> 
> Macht schon soweit alles was ich will, A, B und C landen in den entsprechenden 
> Groups. Nun will ich jedoch den Teil hinter den _ optional machen. "A.B" soll 
> also ebenfalls gematcht werden, mit der dritten Gruppe dann halt None oder 
> nicht-existent. Daran scheitere ich jedoch noch.
> 
> re.match(r"(.+)\.(.+)(?:_(.+))?", "A.B_C").groups()
> -> ('A', 'B_C', None)

Das liegt daran, dass das zweite .+ bereits B_C matcht, was du aber
moechtest ist, dass die 2. Gruppe nur bis zum ersten _ matcht also:

re.match(r"(.+)\.([^_]+)(?:_(.+))?", "A.B_C").groups()

Jedenfalls soweit ich dich verstanden habe :)

Andreas



Mehr Informationen über die Mailingliste python-de