diff --git a/doc/efun/regreplace b/doc/efun/regreplace
new file mode 100644
index 0000000..d459bb2
--- /dev/null
+++ b/doc/efun/regreplace
@@ -0,0 +1,57 @@
+SYNOPSIS
+     string regreplace(string txt, string pattern,
+                       string|closure replacepattern, int flags)
+
+BESCHREIBUNG
+     Die Funktion durchsucht den String txt nach einem Vorkommen
+     des regulaeren Ausdrucks pattern, und ersetzt ihn durch
+     den String replacepattern. (replacepattern kann auch eine Closure
+     sein. Sie bekommt als argument den passenden Substring und muss
+     den Ersatzstring zurueckliefern.)
+
+     Im replacestring kann man via '&' auf den zum Suchausdruck
+     passenden Teilstring im Original zugreifen. Mit \n (wobei n
+     eine Ganzzahl ist) kann man auf den n-ten Unterausdruck
+     des regulaeren Ausdrucks zugreifen. Um "&" oder "\\1" als
+     Ersetzung zu erreichen, muss "\\&" bzw "\\\\1" verwendet werden.
+
+     Beim Flag bestimmt ein gesetztes Bit 0, dass der Ausdruck so oft
+     wie vorhanden ersetzt wird, sonst nur das erste Auftreten.
+     Bit 1 bestimmt, ob der regulaere Ausdruck 'ed' oder 'sed' kompatibel
+     ist (Bit geloescht) oder 'ex' kompatibel (gesetzt).
+
+     Die Funktion wirkt wie s/pattern/replacepattern/flags in
+     Editoren wie vi oder sed. Sie ist besonders gut geeignet um
+     variable Strings zu ersetzen, im Gegensatz zu regexplode, wo
+     man den String nur nach einem regulaeren Ausdruck zerlegen kann.
+
+BEISPIELE
+     // ersetzt @@wer@@ durch den Namen des Objektes
+     regreplace(str,"@@wer@@",(string)obj->name(WER,2),1)
+
+     // ersetze alle doppelten Leerzeichen durch ein einzelnes
+     regreplace(str, "  *", " ", 1);
+
+     // Sucht nach 'teilt Dir mit: ' und schliesst den nachfolgenden
+     // Text mit <underline> und </underline> ein; bei jedem Auftreten.
+
+     msgin = regreplace(msgin, "teilt Dir mit: (.*)",
+                               "teilt Dir mit: <underline>\\1</underline>",
+                               1);
+
+     // Ersetzt die <underline> html-Tags durch die vt100
+     // Escape-Sequenzen fuer Unterstreichung
+     txt = regreplace(txt, "<underline>", "<ESC>[5m", 1);
+
+     // Ersetzt das Wort HOUSE in Kleinbuchstaben.
+     txt = regreplace(txt, "HOUSE", #'lower_case, 1);
+
+BUGS:
+     I have written that efun. It doesn't have BUGS. By definition.
+     Well, in fact it crashed as I first tried it on running TAPPMud.
+     *sigh*
+     Marcus@TAPPMud
+
+SIEHE AUCH
+     Verwandt: regexp(E), regexplode(E), sscanf(E)
+     Aehnlich: replace_personal(L)
