From b99c132bd9030883f7a3482feb5e2b38c02f4188 Mon Sep 17 00:00:00 2001 From: Serhiy Storchaka Date: Mon, 10 Nov 2014 14:38:16 +0200 Subject: Fixed AttributeError when the regular expression starts from illegal escape. --- Lib/sre_parse.py | 1 + Lib/test/test_re.py | 14 ++++++++++++++ 2 files changed, 15 insertions(+) diff --git a/Lib/sre_parse.py b/Lib/sre_parse.py index 2be392e..fb622ec 100644 --- a/Lib/sre_parse.py +++ b/Lib/sre_parse.py @@ -211,6 +211,7 @@ class Tokenizer: string = str(string, 'latin1') self.decoded_string = string self.index = 0 + self.next = None self.__next() def __next(self): index = self.index diff --git a/Lib/test/test_re.py b/Lib/test/test_re.py index 2b72c0f..b30abad 100644 --- a/Lib/test/test_re.py +++ b/Lib/test/test_re.py @@ -531,6 +531,20 @@ class ReTests(unittest.TestCase): self.assertEqual(re.search(br"\d\D\w\W\s\S", b"1aa! a", re.LOCALE).group(0), b"1aa! a") + def test_other_escapes(self): + self.assertRaises(re.error, re.compile, "\\") + self.assertEqual(re.match(r"\(", '(').group(), '(') + self.assertIsNone(re.match(r"\(", ')')) + self.assertEqual(re.match(r"\\", '\\').group(), '\\') + self.assertEqual(re.match(r"\y", 'y').group(), 'y') + self.assertIsNone(re.match(r"\y", 'z')) + self.assertEqual(re.match(r"[\]]", ']').group(), ']') + self.assertIsNone(re.match(r"[\]]", '[')) + self.assertEqual(re.match(r"[a\-c]", '-').group(), '-') + self.assertIsNone(re.match(r"[a\-c]", 'b')) + self.assertEqual(re.match(r"[\^a]+", 'a^').group(), 'a^') + self.assertIsNone(re.match(r"[\^a]+", 'b')) + def test_string_boundaries(self): # See http://bugs.python.org/issue10713 self.assertEqual(re.search(r"\b(abc)\b", "abc").group(1), -- cgit v0.12