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;