diff options
author | Gustavo Niemeyer <gustavo@niemeyer.net> | 2005-09-14 08:54:39 (GMT) |
---|---|---|
committer | Gustavo Niemeyer <gustavo@niemeyer.net> | 2005-09-14 08:54:39 (GMT) |
commit | 6fa0c5a452ea935977b283955a1d49e5e23d97dc (patch) | |
tree | 2a192ec77d57f5f9e6be0e742fbcd4dc70a98005 | |
parent | 0c55f2946b559bd5f6dec457accdc2f2c9c55d3a (diff) | |
download | cpython-6fa0c5a452ea935977b283955a1d49e5e23d97dc.zip cpython-6fa0c5a452ea935977b283955a1d49e5e23d97dc.tar.gz cpython-6fa0c5a452ea935977b283955a1d49e5e23d97dc.tar.bz2 |
Bug #1202493: Fixing SRE parser to handle '{}' as perl does, rather than
considering it exactly like a '*'.
-rw-r--r-- | Lib/sre_parse.py | 3 | ||||
-rw-r--r-- | Lib/test/test_re.py | 3 | ||||
-rw-r--r-- | Misc/NEWS | 4 |
3 files changed, 10 insertions, 0 deletions
diff --git a/Lib/sre_parse.py b/Lib/sre_parse.py index 33b399e..319bf43 100644 --- a/Lib/sre_parse.py +++ b/Lib/sre_parse.py @@ -485,6 +485,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) @@ -443,6 +443,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 ----- |