From 539604146aa5e33a5a1517f1a5fb4548153d77ef Mon Sep 17 00:00:00 2001 From: Georg Brandl Date: Sun, 18 Sep 2005 13:03:16 +0000 Subject: Bug #1202493: Fixing SRE parser to handle '{}' as perl does, rather than considering it exactly like a '*'. Backport from 2.5 branch. --- Lib/sre_parse.py | 3 +++ Lib/test/test_re.py | 3 +++ Misc/NEWS | 4 ++++ 3 files changed, 10 insertions(+) diff --git a/Lib/sre_parse.py b/Lib/sre_parse.py index 5066615..c8a2fa1 100644 --- a/Lib/sre_parse.py +++ b/Lib/sre_parse.py @@ -474,6 +474,9 @@ def _parse(source, state): elif this == "+": min, max = 1, MAXREPEAT elif this == "{": + if source.next == "}": + subpatternappend((LITERAL, ord(this))) + continue here = source.tell() min, max = 0, MAXREPEAT lo = hi = "" diff --git a/Lib/test/test_re.py b/Lib/test/test_re.py index eab995d..9755005 100644 --- a/Lib/test/test_re.py +++ b/Lib/test/test_re.py @@ -297,6 +297,9 @@ class ReTests(unittest.TestCase): self.assertNotEqual(re.match("^x{1,4}?$", "xxx"), None) self.assertNotEqual(re.match("^x{3,4}?$", "xxx"), None) + self.assertEqual(re.match("^x{}$", "xxx"), None) + self.assertNotEqual(re.match("^x{}$", "x{}"), None) + def test_getattr(self): self.assertEqual(re.match("(a)", "a").pos, 0) self.assertEqual(re.match("(a)", "a").endpos, 1) diff --git a/Misc/NEWS b/Misc/NEWS index b0deaca..889f5f8 100644 --- a/Misc/NEWS +++ b/Misc/NEWS @@ -165,6 +165,10 @@ Library from the input stream, so that the output is a byte string in the correct encoding instead of a unicode string. +- Bug #1202493: Fixing SRE parser to handle '{}' as perl does, rather than + considering it exactly like a '*'. + + Build ----- -- cgit v0.12