"mk" <[email protected]> wrote in message news:[email protected]...
Hello,>>> r=re.compile(r'(?:[a-zA-Z]:)([\\/]\w+)+') >>> r.search(r'c:/tmp/spam/eggs').groups() ('/eggs',) Obviously, I would like to capture all groups: ('/tmp', '/spam', '/eggs')But it seems that re captures only the last group. Is there any way to capture all groups with repeat following it, i.e. (...)+ or (...)* ?Even better would be: ('tmp', 'spam', 'eggs') Yes, I know about re.split: >>> re.split( r'(?:\w:)?[/\\]', r'c:/tmp/spam\\eggs/' ) ['', 'tmp', 'spam', '', 'eggs', '']My interest is more general in this case: how to capture many groups with a repeat?
re.findall is what you're looking for. Here's all words not followed by a colon:
import re re.findall(u'(\w+)(?!:)',r'c:\tmp\spam/eggs')
['tmp', 'spam', 'eggs'] -Mark -- http://mail.python.org/mailman/listinfo/python-list
