[Python-de] zwei regex zu einem verbinden
Reimar Bauer
rb.proj at gmail.com
Mi Dez 18 19:42:21 CET 2013
Hi
2013/12/18 Torsten P. <topic2k at googlemail.com>:
> Hallo Gruppe,
>
> ich möchte in einem Text zählen, wieviele Zeichen von '#' oder '0' (XOR) nach einem Punkt folgen. Ich wollte dies mit re.search angehen.
> Wenn ich entweder auf '#' oder '0' prüfe klappts.
>
> t1 = 'some text .000 more text'
> t2 = 'some text .### more text'
>
Falls das nur die Fälle sind die in Betracht kommen, würde ich da
keine regex für nehmen.
text.count('0') or text.count('#')
Gruß
Reimar
> re.search('\.(0*)', t1).groups() >>> ('000',)
> re.search('\.(0*)', t2).groups() >>> ('',)
> re.search('\.(#*)', t1).groups() >>> ('',)
> re.search('\.(#*)', t2).groups() >>> ('###',)
>
> Nun würde ich aber gerne statt zwei regex nur einen haben. Leider bin ich da nicht erfolgreich. Folgendes habe ich schon probiert:
>
> re.search('\.(#*)|(0*)', t1).groups() > (None, '')
> re.search('\.(#*)|(0*)', t2).groups() > (None, '')
> re.search('\.(0*)|(#*)', t1).groups() > (None, '')
> re.search('\.(0*)|(#*)', t2).groups() > (None, '')
> re.search('\.(#|0)*', t1).groups() > ('0',)
> re.search('\.(#|0)*', t2).groups() > ('#',)
> re.search('\.(0|#)*', t1).groups() > ('0',)
> re.search('\.(0|#)*', t2).groups() > ('#',)
> re.search('\.(#*|0*)', t1).groups() > ('',)
> re.search('\.(#*|0*)', t2).groups() > ('###',)
> re.search('\.(0*|#*)', t1).groups() > ('000',)
> re.search('\.(0*|#*)', t2).groups() > ('',)
>
> Einen Teilerfolg habe ich mit:
>
>>>> re.search('\.(?P<sign>0|[#])(?P<cnt>(?P=sign)*)', t1).groups()
> ('0', '00')
>>>>
>>>> re.search('\.(?P<sign>0|[#])(?P<cnt>(?P=sign)*)', t2).groups()#
> ('#', '##')
>
> Kann mir jemand sagen, wie das richtig sein muss bzw. wo mein Fehler ist?
>
> Danke,
> Torsten
>
>
> _______________________________________________
> python-de maillist - python-de at python.org
> https://mail.python.org/mailman/listinfo/python-de
Mehr Informationen über die Mailingliste python-de