Bug #1202493: Fixing SRE parser to handle '{}' as perl does, rather than

considering it exactly like a '*'.
This commit is contained in:
Gustavo Niemeyer 2005-09-14 08:54:39 +00:00
parent 0c55f2946b
commit 6fa0c5a452
3 changed files with 10 additions and 0 deletions

View File

@ -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 = ""

View File

@ -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)

View File

@ -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
-----