mirror of
https://github.com/python/cpython.git
synced 2025-08-04 00:48:58 +00:00
#12759: sre_parse now raises a proper error when the name of the group is missing. Initial patch by Serhiy Storchaka.
This commit is contained in:
parent
dedfa9bfae
commit
0941d9fc64
3 changed files with 30 additions and 1 deletions
|
@ -161,11 +161,31 @@ class ReTests(unittest.TestCase):
|
|||
self.assertEqual(re.sub('x*', '-', 'abxd'), '-a-b-d-')
|
||||
self.assertEqual(re.sub('x+', '-', 'abxd'), 'ab-d')
|
||||
|
||||
def test_symbolic_groups(self):
|
||||
re.compile('(?P<a>x)(?P=a)(?(a)y)')
|
||||
re.compile('(?P<a1>x)(?P=a1)(?(a1)y)')
|
||||
self.assertRaises(re.error, re.compile, '(?P<a>)(?P<a>)')
|
||||
self.assertRaises(re.error, re.compile, '(?Px)')
|
||||
self.assertRaises(re.error, re.compile, '(?P=)')
|
||||
self.assertRaises(re.error, re.compile, '(?P=1)')
|
||||
self.assertRaises(re.error, re.compile, '(?P=a)')
|
||||
self.assertRaises(re.error, re.compile, '(?P=a1)')
|
||||
self.assertRaises(re.error, re.compile, '(?P=a.)')
|
||||
self.assertRaises(re.error, re.compile, '(?P<)')
|
||||
self.assertRaises(re.error, re.compile, '(?P<>)')
|
||||
self.assertRaises(re.error, re.compile, '(?P<1>)')
|
||||
self.assertRaises(re.error, re.compile, '(?P<a.>)')
|
||||
self.assertRaises(re.error, re.compile, '(?())')
|
||||
self.assertRaises(re.error, re.compile, '(?(a))')
|
||||
self.assertRaises(re.error, re.compile, '(?(1a))')
|
||||
self.assertRaises(re.error, re.compile, '(?(a.))')
|
||||
|
||||
def test_symbolic_refs(self):
|
||||
self.assertRaises(re.error, re.sub, '(?P<a>x)', '\g<a', 'xx')
|
||||
self.assertRaises(re.error, re.sub, '(?P<a>x)', '\g<', 'xx')
|
||||
self.assertRaises(re.error, re.sub, '(?P<a>x)', '\g', 'xx')
|
||||
self.assertRaises(re.error, re.sub, '(?P<a>x)', '\g<a a>', 'xx')
|
||||
self.assertRaises(re.error, re.sub, '(?P<a>x)', '\g<>', 'xx')
|
||||
self.assertRaises(re.error, re.sub, '(?P<a>x)', '\g<1a1>', 'xx')
|
||||
self.assertRaises(IndexError, re.sub, '(?P<a>x)', '\g<ab>', 'xx')
|
||||
self.assertRaises(re.error, re.sub, '(?P<a>x)|(?P<b>y)', '\g<b>', 'xx')
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue