Am Wed, 18 Dec 2013 10:26:42 -0800 (PST)
schrieb "Torsten P."
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/