allow longs as indexes to group() (closes #22530)
diff --git a/Lib/test/test_re.py b/Lib/test/test_re.py
index 7bdf353..3c77948 100644
--- a/Lib/test/test_re.py
+++ b/Lib/test/test_re.py
@@ -971,6 +971,10 @@
pat.split(string='abracadabra', maxsplit=1),
['', 'ab', 'racadabra'])
+ def test_match_group_takes_long(self):
+ self.assertEqual(re.match("(foo)", "foo").group(1L), "foo")
+ self.assertRaises(IndexError, re.match("", "").group, sys.maxint + 1)
+
def run_re_tests():
from test.re_tests import tests, SUCCEED, FAIL, SYNTAX_ERROR
diff --git a/Misc/NEWS b/Misc/NEWS
index 07e8855..2681b9e 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -31,6 +31,9 @@
Library
-------
+- Issue #22530: Allow the ``group()`` method of regular expression match objects
+ to take a ``long`` as an index.
+
- Issue #22517: When a io.BufferedRWPair object is deallocated, clear its
weakrefs.
diff --git a/Modules/_sre.c b/Modules/_sre.c
index d88c13f..ec98182 100644
--- a/Modules/_sre.c
+++ b/Modules/_sre.c
@@ -3301,7 +3301,7 @@
{
Py_ssize_t i;
- if (PyInt_Check(index))
+ if (PyInt_Check(index) || PyLong_Check(index))
return PyInt_AsSsize_t(index);
i = -1;