diff options
author | Serhiy Storchaka <storchaka@gmail.com> | 2023-08-16 10:00:55 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-08-16 10:00:55 (GMT) |
commit | bd2ef82a5010985abdeef2ca71bcbcc9a366993b (patch) | |
tree | 8c8195fa20e743c40c6c6b0627f4e84384d5678e /Lib/test/test_re.py | |
parent | 00bfed7cba3f2d66a1534f9f088ddf68abbf0d3f (diff) | |
download | cpython-bd2ef82a5010985abdeef2ca71bcbcc9a366993b.zip cpython-bd2ef82a5010985abdeef2ca71bcbcc9a366993b.tar.gz cpython-bd2ef82a5010985abdeef2ca71bcbcc9a366993b.tar.bz2 |
[3.12] gh-100061: Proper fix of the bug in the matching of possessive quantifiers (GH-102612) (#108003)
Restore the global Input Stream pointer after trying to match a sub-pattern.
.
(cherry picked from commit abd9cc52d94b8e2835322b62c29f09bb0e6fcfe9)
Co-authored-by: SKO <41810398+uyw4687@users.noreply.github.com>
Diffstat (limited to 'Lib/test/test_re.py')
-rw-r--r-- | Lib/test/test_re.py | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/Lib/test/test_re.py b/Lib/test/test_re.py index 85541f4..5a5de52 100644 --- a/Lib/test/test_re.py +++ b/Lib/test/test_re.py @@ -2366,6 +2366,16 @@ class ReTests(unittest.TestCase): self.assertFalse(template_re1.match('nope')) def test_bug_gh106052(self): + # gh-100061 + self.assertEqual(re.match('(?>(?:.(?!D))+)', 'ABCDE').span(), (0, 2)) + self.assertEqual(re.match('(?:.(?!D))++', 'ABCDE').span(), (0, 2)) + self.assertEqual(re.match('(?>(?:.(?!D))*)', 'ABCDE').span(), (0, 2)) + self.assertEqual(re.match('(?:.(?!D))*+', 'ABCDE').span(), (0, 2)) + self.assertEqual(re.match('(?>(?:.(?!D))?)', 'CDE').span(), (0, 0)) + self.assertEqual(re.match('(?:.(?!D))?+', 'CDE').span(), (0, 0)) + self.assertEqual(re.match('(?>(?:.(?!D)){1,3})', 'ABCDE').span(), (0, 2)) + self.assertEqual(re.match('(?:.(?!D)){1,3}+', 'ABCDE').span(), (0, 2)) + # gh-106052 self.assertEqual(re.match("(?>(?:ab?c)+)", "aca").span(), (0, 2)) self.assertEqual(re.match("(?:ab?c)++", "aca").span(), (0, 2)) self.assertEqual(re.match("(?>(?:ab?c)*)", "aca").span(), (0, 2)) @@ -2471,7 +2481,6 @@ ATOMIC_GROUP 17: SUCCESS ''') - @unittest.expectedFailure # gh-106052 def test_possesive_repeat_one(self): self.assertEqual(get_debug_out(r'a?+'), '''\ POSSESSIVE_REPEAT 0 1 @@ -2484,7 +2493,6 @@ POSSESSIVE_REPEAT 0 1 12: SUCCESS ''') - @unittest.expectedFailure # gh-106052 def test_possesive_repeat(self): self.assertEqual(get_debug_out(r'(?:ab)?+'), '''\ POSSESSIVE_REPEAT 0 1 |