Commit a6652a5e authored by Serhiy Storchaka's avatar Serhiy Storchaka

Issue #2537: Remove breaked check which prevented valid regular expressions.

Patch by Meador Inge.

See also issue #18647.
parent 2688b25a
......@@ -358,8 +358,6 @@ def _optimize_unicode(charset, fixup):
def _simple(av):
# check if av is a "simple" operator
lo, hi = av[2].getwidth()
#if lo == 0 and hi == MAXREPEAT:
# raise error("nothing to repeat")
return lo == hi == 1 and av[2][0][0] != SUBPATTERN
def _compile_info(code, pattern, flags):
......
......@@ -1051,6 +1051,16 @@ class ReTests(unittest.TestCase):
[b'xyz'], msg=pattern)
def test_bug_2537(self):
# issue 2537: empty submatches
for outer_op in ('{0,}', '*', '+', '{1,187}'):
for inner_op in ('{0,}', '*', '?'):
r = re.compile("^((x|y)%s)%s" % (inner_op, outer_op))
m = r.match("xyyzy")
self.assertEqual(m.group(0), "xyy")
self.assertEqual(m.group(1), "")
self.assertEqual(m.group(2), "y")
def run_re_tests():
from test.re_tests import tests, SUCCEED, FAIL, SYNTAX_ERROR
if verbose:
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment