diff options
author | Damien George <damien.p.george@gmail.com> | 2018-05-24 13:08:15 +1000 |
---|---|---|
committer | Damien George <damien.p.george@gmail.com> | 2018-07-02 14:54:56 +1000 |
commit | 1e9b871d295ff3c8ab6d9cd0fafa94c52271820a (patch) | |
tree | 547f60cb2c49a7bd333856f2da58fedf411f5185 /tests/extmod/ure_span.py | |
parent | 1f864609106cc293da3748ee8f93e40c4a28a495 (diff) |
extmod/modure: Add match.span(), start() and end() methods, and tests.
This feature is controlled at compile time by
MICROPY_PY_URE_MATCH_SPAN_START_END, disabled by default.
Thanks to @dmazzella for the original patch for this feature; see #3770.
Diffstat (limited to 'tests/extmod/ure_span.py')
-rw-r--r-- | tests/extmod/ure_span.py | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/tests/extmod/ure_span.py b/tests/extmod/ure_span.py new file mode 100644 index 000000000..50f44399c --- /dev/null +++ b/tests/extmod/ure_span.py @@ -0,0 +1,40 @@ +# 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')) |