| 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) |