*** Modules/regexmodule.c	1996/09/11 16:25:30	1.1
--- Modules/regexmodule.c	1996/09/11 16:38:18
***************
*** 288,293 ****
  		return re->re_givenpat;
  	}
  	if (strcmp(name, "__members__") == 0) {
! 		PyObject *list = PyList_New(6);
  		if (list) {
  			PyList_SetItem(list, 0, PyString_FromString("last"));
--- 288,323 ----
  		return re->re_givenpat;
  	}
+ 	if (strcmp(name, "found") == 0) {
+ 	        char *lastok;
+ 		if (re->re_lastok == NULL) {
+ 			Py_INCREF(Py_None);
+ 			return Py_None;
+ 		}
+ 		lastok=PyString_AsString(re->re_lastok);
+ 		return PyString_FromStringAndSize(lastok+re->re_regs.start[0],
+ 						  re->re_regs.end[0]-re->re_regs.start[0] );
+ 	}
+ 	if (strcmp(name, "before") == 0) {
+ 	        char *lastok;
+ 		if (re->re_lastok == NULL) {
+ 			Py_INCREF(Py_None);
+ 			return Py_None;
+ 		}
+ 		lastok=PyString_AsString(re->re_lastok);
+ 		return PyString_FromStringAndSize(lastok,re->re_regs.start[0]);
+ 	}
+ 	if (strcmp(name, "after") == 0) {
+ 	        char *lastok; int lastok_len;
+ 		if (re->re_lastok == NULL) {
+ 			Py_INCREF(Py_None);
+ 			return Py_None;
+ 		}
+ 		lastok=PyString_AsString(re->re_lastok);
+ 		lastok_len=PyString_Size(re->re_lastok);
+ 		return PyString_FromStringAndSize(lastok+re->re_regs.end[0],
+ 						  lastok_len-re->re_regs.end[0]);
+ 	}
  	if (strcmp(name, "__members__") == 0) {
! 		PyObject *list = PyList_New(9);
  		if (list) {
  			PyList_SetItem(list, 0, PyString_FromString("last"));
***************
*** 297,300 ****
--- 327,333 ----
  			PyList_SetItem(list, 4, PyString_FromString("realpat"));
  			PyList_SetItem(list, 5, PyString_FromString("givenpat"));
+ 			PyList_SetItem(list, 6, PyString_FromString("found"));
+ 			PyList_SetItem(list, 7, PyString_FromString("before"));
+ 			PyList_SetItem(list, 8, PyString_FromString("after"));
  			if (PyErr_Occurred()) {
  				Py_DECREF(list);
