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
      string msgin;

      /* 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",
              function string (string s) {return lower_case(s);},
              1);

AUTOR
      Marcus@TAPPMud schrieb die Original-efun (und die englische Manpage).

SIEHE AUCH
      regexp(E), regexplode(E), sscanf(E)
