Author: Amaury Forgeot d'Arc <amaur...@gmail.com> Branch: py3.6 Changeset: r93460:0e57c6df8538 Date: 2017-12-17 19:34 +0100 http://bitbucket.org/pypy/pypy/changeset/0e57c6df8538/
Log: CPython Issue #24454: Regular expression match object groups are now accessible using __getitem__. "mo[x]" is equivalent to "mo.group(x)". diff --git a/pypy/module/_sre/interp_sre.py b/pypy/module/_sre/interp_sre.py --- a/pypy/module/_sre/interp_sre.py +++ b/pypy/module/_sre/interp_sre.py @@ -533,6 +533,10 @@ space = self.space raise oefmt(space.w_TypeError, "cannot copy this match object") + def descr_getitem(self, space, w_index): + start, end = self.do_span(w_index) + return slice_w(space, self.ctx, start, end, space.w_None) + @jit.look_inside_iff(lambda self, args_w: jit.isconstant(len(args_w))) def group_w(self, args_w): space = self.space @@ -684,6 +688,8 @@ __copy__ = interp2app(W_SRE_Match.cannot_copy_w), __deepcopy__ = interp2app(W_SRE_Match.cannot_copy_w), __repr__ = interp2app(W_SRE_Match.repr_w), + __getitem__ = interp2app(W_SRE_Match.descr_getitem), + # group = interp2app(W_SRE_Match.group_w), groups = interp2app(W_SRE_Match.groups_w), groupdict = interp2app(W_SRE_Match.groupdict_w), diff --git a/pypy/module/_sre/test/test_app_sre.py b/pypy/module/_sre/test/test_app_sre.py --- a/pypy/module/_sre/test/test_app_sre.py +++ b/pypy/module/_sre/test/test_app_sre.py @@ -236,6 +236,10 @@ return self.value assert re.match("(foo)", "foo").group(Index(1)) == "foo" + def test_getitem(self): + import re + assert re.match("(foo)bar", "foobar")[1] == "foo" + def test_expand(self): import re m = re.search("a(..)(?P<name>..)", "ab1bc") _______________________________________________ pypy-commit mailing list pypy-commit@python.org https://mail.python.org/mailman/listinfo/pypy-commit