diff options
author | Serhiy Storchaka <storchaka@gmail.com> | 2016-06-18 13:48:07 (GMT) |
---|---|---|
committer | Serhiy Storchaka <storchaka@gmail.com> | 2016-06-18 13:48:07 (GMT) |
commit | 977b3ac1c1cf18ce8967503ac7a8638a819a5c22 (patch) | |
tree | e17173039c613e2d2c22387397bf01fd99ace433 /Lib/test/test_re.py | |
parent | 3583c3bd1dae286144ff3cc1ccc7982a8a5966e7 (diff) | |
download | cpython-977b3ac1c1cf18ce8967503ac7a8638a819a5c22.zip cpython-977b3ac1c1cf18ce8967503ac7a8638a819a5c22.tar.gz cpython-977b3ac1c1cf18ce8967503ac7a8638a819a5c22.tar.bz2 |
Issue #27177: Match objects in the re module now support index-like objects
as group indices. Based on patches by Jeroen Demeyer and Xiang Zhang.
Diffstat (limited to 'Lib/test/test_re.py')
-rw-r--r-- | Lib/test/test_re.py | 28 |
1 files changed, 21 insertions, 7 deletions
diff --git a/Lib/test/test_re.py b/Lib/test/test_re.py index e27591c..24a0604 100644 --- a/Lib/test/test_re.py +++ b/Lib/test/test_re.py @@ -414,19 +414,33 @@ class ReTests(unittest.TestCase): self.assertEqual(pat.match('bc').groups(), ('b', None, 'b', 'c')) self.assertEqual(pat.match('bc').groups(""), ('b', "", 'b', 'c')) - # A single group - m = re.match('(a)', 'a') - self.assertEqual(m.group(0), 'a') - self.assertEqual(m.group(0), 'a') - self.assertEqual(m.group(1), 'a') - self.assertEqual(m.group(1, 1), ('a', 'a')) - pat = re.compile('(?:(?P<a1>a)|(?P<b2>b))(?P<c3>c)?') self.assertEqual(pat.match('a').group(1, 2, 3), ('a', None, None)) self.assertEqual(pat.match('b').group('a1', 'b2', 'c3'), (None, 'b', None)) self.assertEqual(pat.match('ac').group(1, 'b2', 3), ('a', None, 'c')) + def test_group(self): + class Index: + def __init__(self, value): + self.value = value + def __index__(self): + return self.value + # A single group + m = re.match('(a)(b)', 'ab') + self.assertEqual(m.group(), 'ab') + self.assertEqual(m.group(0), 'ab') + self.assertEqual(m.group(1), 'a') + self.assertEqual(m.group(Index(1)), 'a') + self.assertRaises(IndexError, m.group, -1) + self.assertRaises(IndexError, m.group, 3) + self.assertRaises(IndexError, m.group, 1<<1000) + self.assertRaises(IndexError, m.group, Index(1<<1000)) + self.assertRaises(IndexError, m.group, 'x') + # Multiple groups + self.assertEqual(m.group(2, 1), ('b', 'a')) + self.assertEqual(m.group(Index(2), Index(1)), ('b', 'a')) + def test_re_fullmatch(self): # Issue 16203: Proposal: add re.fullmatch() method. self.assertEqual(re.fullmatch(r"a", "a").span(), (0, 1)) |