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