Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit b99c132

Browse files
Fixed AttributeError when the regular expression starts from illegal escape.
1 parent ce40e1a commit b99c132

2 files changed

Lines changed: 15 additions & 0 deletions

File tree

Lib/sre_parse.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -211,6 +211,7 @@ def __init__(self, string):
211211
string = str(string, 'latin1')
212212
self.decoded_string = string
213213
self.index = 0
214+
self.next = None
214215
self.__next()
215216
def __next(self):
216217
index = self.index

Lib/test/test_re.py

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -531,6 +531,20 @@ def test_special_escapes(self):
531531
self.assertEqual(re.search(br"\d\D\w\W\s\S",
532532
b"1aa! a", re.LOCALE).group(0), b"1aa! a")
533533

534+
def test_other_escapes(self):
535+
self.assertRaises(re.error, re.compile, "\\")
536+
self.assertEqual(re.match(r"\(", '(').group(), '(')
537+
self.assertIsNone(re.match(r"\(", ')'))
538+
self.assertEqual(re.match(r"\\", '\\').group(), '\\')
539+
self.assertEqual(re.match(r"\y", 'y').group(), 'y')
540+
self.assertIsNone(re.match(r"\y", 'z'))
541+
self.assertEqual(re.match(r"[\]]", ']').group(), ']')
542+
self.assertIsNone(re.match(r"[\]]", '['))
543+
self.assertEqual(re.match(r"[a\-c]", '-').group(), '-')
544+
self.assertIsNone(re.match(r"[a\-c]", 'b'))
545+
self.assertEqual(re.match(r"[\^a]+", 'a^').group(), 'a^')
546+
self.assertIsNone(re.match(r"[\^a]+", 'b'))
547+
534548
def test_string_boundaries(self):
535549
# See http://bugs.python.org/issue10713
536550
self.assertEqual(re.search(r"\b(abc)\b", "abc").group(1),

0 commit comments

Comments
 (0)