cpython: 29764a7bd6ba (original) (raw)
Mercurial > cpython
changeset 86508:29764a7bd6ba
Issue #17087: Improved the repr for regular expression match objects. [#17087]
Serhiy Storchaka storchaka@gmail.com | |
---|---|
date | Sun, 20 Oct 2013 13:13:31 +0300 |
parents | 727107721f4f |
children | 84a8b797c5c5 7f4e0c869c2e |
files | Lib/test/test_re.py Misc/NEWS Modules/_sre.c |
diffstat | 3 files changed, 41 insertions(+), 1 deletions(-)[+] [-] Lib/test/test_re.py 22 Misc/NEWS 2 Modules/_sre.c 18 |
line wrap: on
line diff
--- a/Lib/test/test_re.py +++ b/Lib/test/test_re.py @@ -1104,6 +1104,28 @@ class ReTests(unittest.TestCase): self.assertEqual(re.compile(pattern, re.S).findall(b'xyz'), [b'xyz'], msg=pattern)
- def test_match_repr(self):
for string in '[abracadabra]', S('[abracadabra]'):[](#l1.8)
m = re.search(r'(.+)(.*?)\1', string)[](#l1.9)
self.assertEqual(repr(m), "<%s.%s object; "[](#l1.10)
"span=(1, 12), match='abracadabra'>" %[](#l1.11)
(type(m).__module__, type(m).__qualname__))[](#l1.12)
for string in (b'[abracadabra]', B(b'[abracadabra]'),[](#l1.13)
bytearray(b'[abracadabra]'),[](#l1.14)
memoryview(b'[abracadabra]')):[](#l1.15)
m = re.search(rb'(.+)(.*?)\1', string)[](#l1.16)
self.assertEqual(repr(m), "<%s.%s object; "[](#l1.17)
"span=(1, 12), match=b'abracadabra'>" %[](#l1.18)
(type(m).__module__, type(m).__qualname__))[](#l1.19)
first, second = list(re.finditer("(aa)|(bb)", "aa bb"))[](#l1.21)
self.assertEqual(repr(first), "<%s.%s object; "[](#l1.22)
"span=(0, 2), match='aa'>" %[](#l1.23)
(type(second).__module__, type(first).__qualname__))[](#l1.24)
self.assertEqual(repr(second), "<%s.%s object; "[](#l1.25)
"span=(3, 5), match='bb'>" %[](#l1.26)
(type(second).__module__, type(second).__qualname__))[](#l1.27)
+ def test_bug_2537(self): # issue 2537: empty submatches
--- a/Misc/NEWS +++ b/Misc/NEWS @@ -62,6 +62,8 @@ Core and Builtins Library ------- +- Issue #17087: Improved the repr for regular expression match objects. +
- Issue #18235: Fix the sysconfig variables LDSHARED and BLDSHARED under AIX. Patch by David Edelsohn.
--- a/Modules/_sre.c +++ b/Modules/_sre.c @@ -3637,6 +3637,22 @@ match_regs_get(MatchObject *self) return match_regs(self); } +static PyObject * +match_repr(MatchObject *self) +{
- PyObject *result;
- PyObject *group0 = match_getslice_by_index(self, 0, Py_None);
- if (group0 == NULL)
return NULL;[](#l3.13)
- result = PyUnicode_FromFormat(
"<%s object; span=(%d, %d), match=%.50R>",[](#l3.15)
Py_TYPE(self)->tp_name,[](#l3.16)
self->mark[0], self->mark[1], group0);[](#l3.17)
- Py_DECREF(group0);
- return result;
+} + + static PyGetSetDef match_getset[] = { {"lastindex", (getter)match_lastindex_get, (setter)NULL}, {"lastgroup", (getter)match_lastgroup_get, (setter)NULL}, @@ -3665,7 +3681,7 @@ static PyTypeObject Match_Type = { 0, /* tp_getattr / 0, / tp_setattr / 0, / tp_reserved */