[Python-de] Probleme mit regulären Ausdruck

Florian Lindner mailinglists at xgm.de
Di Okt 18 11:29:41 CEST 2011


Am Freitag 14 Oktober 2011, 17:07:39 schrieb Andreas Pakulat:
> 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 :)

Danke, dass passt so! Ich habe jetzt diese Regexp benutzt, da sie spezifischer 
als die vom Hartmut matcht.

Grüße,

Florian


Mehr Informationen über die Mailingliste python-de