diff --git a/Lib/sre.py b/Lib/sre.py
index e7517f5..88b4fab 100644
--- a/Lib/sre.py
+++ b/Lib/sre.py
@@ -93,6 +93,7 @@
 
 """
 
+import sys
 import sre_compile
 import sre_parse
 
@@ -164,6 +165,15 @@
     Empty matches are included in the result."""
     return _compile(pattern, 0).findall(string)
 
+if sys.hexversion >= 0x02020000:
+    def finditer(pattern, string):
+        """Return an iterator over all non-overlapping matches in
+        the string.  For each match, the iterator returns a match
+        object.
+
+        Empty matches are included in the result."""
+        return _compile(pattern, 0).finditer(string)
+
 def compile(pattern, flags=0):
     "Compile a regular expression pattern, returning a pattern object."
     return _compile(pattern, flags)
diff --git a/Modules/_sre.c b/Modules/_sre.c
index c520b60..c78ed52 100644
--- a/Modules/_sre.c
+++ b/Modules/_sre.c
@@ -35,6 +35,7 @@
  * 2001-10-20 fl  added split primitive; reenable unicode for 1.6/2.0/2.1
  * 2001-10-21 fl  added sub/subn primitive
  * 2001-10-22 fl  check for literal sub/subn templates
+ * 2001-10-24 fl  added finditer primitive (for 2.2 only)
  *
  * Copyright (c) 1997-2001 by Secret Labs AB.  All rights reserved.
  *
@@ -1954,6 +1955,30 @@
     
 }
 
+#if PY_VERSION_HEX >= 0x02020000
+static PyObject*
+pattern_finditer(PatternObject* pattern, PyObject* args)
+{
+    PyObject* scanner;
+    PyObject* search;
+    PyObject* iterator;
+
+    scanner = pattern_scanner(pattern, args);
+    if (!scanner)
+        return NULL;
+
+    search = PyObject_GetAttrString(scanner, "search");
+    Py_DECREF(scanner);
+    if (!search)
+        return NULL;
+
+    iterator = PyCallIter_New(search, Py_None);
+    Py_DECREF(search);
+
+    return iterator;
+}
+#endif
+
 static PyObject*
 pattern_split(PatternObject* self, PyObject* args, PyObject* kw)
 {
@@ -2331,6 +2356,9 @@
     {"subn", (PyCFunction) pattern_subn, METH_VARARGS|METH_KEYWORDS},
     {"split", (PyCFunction) pattern_split, METH_VARARGS|METH_KEYWORDS},
     {"findall", (PyCFunction) pattern_findall, METH_VARARGS|METH_KEYWORDS},
+#if PY_VERSION_HEX >= 0x02020000
+    {"finditer", (PyCFunction) pattern_finditer, METH_VARARGS},
+#endif
     {"scanner", (PyCFunction) pattern_scanner, METH_VARARGS},
     {"__copy__", (PyCFunction) pattern_copy, METH_VARARGS},
     {"__deepcopy__", (PyCFunction) pattern_deepcopy, METH_VARARGS},
