To grab the text after the 2nd colon (if indeed there are two or more), it's much simpler to do this:
import re q = re.compile(r'.*?:.*?:(.*)').search def grab(s):
... m = q(s) ... if m: ... print m.group(1) ... else: ... print 'not found!' ...
grab('')not found!
grab('::::')::
grab('a:b:yadda')yadda
grab('a:b:c:d')c:d
grab('a:b:')
Or without any regular expressions:
py> def grab(s): ... try: ... first, second, rest = s.split(':', 2) ... print rest ... except ValueError: ... print 'not found!' ... py> grab('') not found! py> grab('a:b:yadda') yadda py> grab('a:b:c:d') c:d py> grab('a:b:')
py>
To the OP: what is it you're trying to do? Often there is a much cleaner way to do it without regular expressions...
Steve -- http://mail.python.org/mailman/listinfo/python-list