[Python-de] zwei regex zu einem verbinden

Florian Diesch diesch at spamfence.net
Mi Dez 18 21:43:28 CET 2013


Am Wed, 18 Dec 2013 10:26:42 -0800 (PST)
schrieb "Torsten P." <topic2k at googlemail.com>:

>     re.search('\.(#*|0*)', t1).groups()     >  ('',)
>     re.search('\.(#*|0*)', t2).groups()     >  ('###',)

Das ist nahe dran. Aber re.search macht bei '(A|B)' Feierabend, sobald
A passt, auch wenn B einen längeren Treffer ergeben würde. Und '#*'
passt halt auch für 'kein #'.

Nimm daher statt '*' ein '+':

>>> re.search(r'\.(0+|#+)', t1).groups()  
('000',)
>>> re.search(r'\.(0+|#+)', t2).groups()  
('###',)

Wenn weder '0' noch '#' nach dem '.' kommen, bekommst du eine Exception:

>>> re.search('\.(#+|0+)', 'some text .aaa more text').groups() 
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: 'NoneType' object has no attribute 'groups'

Wenn du statt dessen lieber einen leeren Treffer willst, kannst du die
Gruppe mit '?' optional machen:

>>> re.search('\.(#+|0+)?', 'some text .aaa more text').groups() 
(None,)


-- 
Privacy Indicator
Unity appindicator to switch privacy settings
<http://www.florian-diesch.de/software/indicator-privacy/>
-------------- nächster Teil --------------
Ein Dateianhang mit Binärdaten wurde abgetrennt...
Dateiname   : signature.asc
Dateityp    : application/pgp-signature
Dateigröße  : 198 bytes
Beschreibung: nicht verfügbar
URL         : <http://mail.python.org/pipermail/python-de/attachments/20131218/0f734fb6/attachment-0001.sig>


Mehr Informationen über die Mailingliste python-de