# test groups, and nested groups try: import ure as re except ImportError: try: import re except ImportError: print("SKIP") raise SystemExit def print_groups(match): print("----") try: i = 0 while True: print(match.group(i)) i += 1 except IndexError: pass m = re.match(r"(([0-9]*)([a-z]*)[0-9]*)", "1234hello567") print_groups(m) m = re.match(r"([0-9]*)(([a-z]*)([0-9]*))", "1234hello567") print_groups(m) # optional group that matches print_groups(re.match(r"(a)?b(c)", "abc")) # optional group that doesn't match print_groups(re.match(r"(a)?b(c)", "bc"))