RegExReplace() [v1.0.45+]

Ersetzt ein oder mehrere Vorkommen eines Suchmusters (regulären Ausdrucks) in einer Zeichenkette.

NeueZkette := RegExReplace(Heuhaufen, NadelRegEx , Ersatz, AusgabeVarAnzahl, Limit, StartPos)

Parameter

Heuhaufen

Die Zeichenkette, die durchsucht und ersetzt werden soll.

NadelRegEx

Ein Suchmuster im PCRE-Format (Perl-kompatibler regulärer Ausdruck). Die Optionen des Suchmusters (falls vorhanden) müssen am Anfang der Zeichenkette stehen, gefolgt von einem ")"-Zeichen. Das Suchmuster i)abc.*123 beispielsweise deaktiviert die Groß-/Kleinschreibung-Sensitivität und sucht nach einer Zeichenkette, die sich zusammensetzt aus "abc", null oder mehr Vorkommen eines beliebigen Zeichens und "123". Wenn keine Optionen vorhanden sind, ist das ")"-Zeichen optional. Zum Beispiel ist )abc dasselbe wie abc.

Ersatz

Wenn leer oder weggelassen, wird NadelRegEx mit einer leeren Zeichenkette ersetzt, d.h. es wird im Rückgabewert weggelassen. Andernfalls geben Sie eine reine Zeichenkette (keinen regulären Ausdruck) an, mit der jede Übereinstimmung ersetzt werden soll.

Dieser Parameter kann Rückreferenzen enthalten, um Teilzeichenketten einzubinden, die jeweils einem Teilsuchmuster in Heuhaufen entsprechen. $0 bis $9 sind die einfachsten Rückreferenzen - $0 ist die Zeichenkette des gesamten Suchmusters, $1 ist die Zeichenkette des ersten Teilsuchmusters, $2 ist die Zeichenkette des zweiten Teilsuchmusters und so weiter. Rückreferenzen größer als 9 (und optional auch kleiner gleich 9) müssen in geschweifte Klammern gesetzt werden, z.B. ${10}, ${11} und so weiter. Wenn es sich um benannte Teilsuchmuster handelt, umschließen Sie den Namen mit geschweiften Klammern, z.B. ${Teilsuchmustername}. Um ein direkt geschriebenes $ anzugeben, verwenden Sie $$ (dieses Zeichen ist das einzige, das so eine Sonderbehandlung voraussetzt; das Escapezeichen "\" wird nie benötigt).

Um die Groß-/Kleinschreibung eines Teilsuchmusters zu ändern, fügen Sie unmittelbar nach dem $-Zeichen einen der folgenden Buchstaben an: U oder u (Großschreibung), L oder l (Kleinschreibung), T oder t (Titelschreibung; erster Buchstabe pro Wort groß, der Rest klein). Zum Beispiel bewirken sowohl $U1 als auch $U{1}, dass eine großgeschriebene Version des ersten Teilsuchmusters eingebunden wird.

Nicht existierende Rückreferenzen und solche, die mit nichts in Heuhaufen übereinstimmen - z.B. eines der Teilsuchmuster in (abc)|(xyz) - werden als leere Zeichenketten eingebunden.

AusgabeVarAnzahl

Wenn weggelassen, wird der zugehörige Wert nicht gespeichert. Andernfalls geben Sie eine Ausgabevariable an, in der die Anzahl der erfolgten Ersetzungen gespeichert werden soll (andernfalls 0).

Limit

Wenn weggelassen, wird standardmäßig -1 verwendet, wodurch alle Vorkommen in Heuhaufen ersetzt werden. Andernfalls geben Sie die maximal zulässige Anzahl von Ersetzungen an. Der Heuhaufen-Bereich rechts neben der letzten Ersetzung bleibt unverändert.

StartPos

Wenn weggelassen, wird standardmäßig 1 verwendet (der Anfang von Heuhaufen). Andernfalls geben Sie 2 an, um beim zweiten Zeichen zu beginnen, 3, um beim dritten zu beginnen, und so weiter. Wenn StartPos die Länge von Heuhaufen überschreitet, beginnt die Suche bei der leeren Zeichenkette am Ende von Heuhaufen (was in der Regel zu keiner Ersetzung führt).

Wenn StartPos kleiner als 1 ist, wird der angegebene Wert als Offset vom Ende von Heuhaufen angesehen. Zum Beispiel kann 0 angegeben werden, um beim letzten Zeichen zu beginnen, -1, um beim vorletzten zu beginnen, und so weiter. Wenn StartPos über das linke Ende von Heuhaufen hinausgeht, wird alles in Heuhaufen durchsucht.

Egal welcher Wert für StartPos verwendet wird, der Rückgabewert ist immer eine vollständige Kopie von Heuhaufen. Der einzige Unterschied besteht darin, dass ein größerer Teil links von Heuhaufen unverändert erscheinen kann, wenn für StartPos ein anderer Wert als 1 angegeben ist.

Rückgabewert

Diese Funktion gibt eine Version von Heuhaufen zurück, deren Inhalt durch die Operation ersetzt wurde. Wenn keine Ersetzungen erforderlich sind, wird Heuhaufen unverändert zurückgegeben. Wenn ein Fehler auftritt (z.B. ein Syntaxfehler in NadelRegEx), wird Heuhaufen unverändert zurückgegeben (außer in Versionen vor 1.0.46.06, die "" zurückgeben) und ErrorLevel auf einen der unten genannten Werte ungleich 0 gesetzt.

Fehlerbehandlung

[v1.1.04+]: Diese Funktion ist in der Lage, bei Misserfolg eine Ausnahme auszulösen (nicht zu verwechseln mit "keine Übereinstimmung gefunden"). Weitere Informationen finden Sie unter Laufzeitfehler.

ErrorLevel wird auf einen der folgenden Werte gesetzt:

Optionen

Siehe RegEx-Kurzübersicht für Optionen wie z.B. i)abc, das die Groß-/Kleinschreibung-Sensitivität ausschaltet.

Performanz

Um einfache Teilzeichenketten zu ersetzen, verwenden Sie StrReplace() oder StringReplace, da diese schneller sind als RegExReplace().

Wenn Sie wissen, wie hoch die maximale Anzahl der Ersetzungen sein wird, geben Sie dies für Limit an, um die Suche frühzeitig zu stoppen, wodurch die Performanz verbessert wird (dies kann auch die Speicherauslastung des Systems während der Operation verringern). Geben Sie z.B. ein Limit von 1 an, wenn Sie genau wissen, dass nur eine Übereinstimmung in der Nähe des Anfangs einer langen Zeichenkette möglich ist.

Aus Performanzgründen werden die 100 zuletzt verwendeten regulären Ausdrücke zwischengespeichert (in kompilierter Form).

Die S-Option kann in bestimmten Fällen die Performanz eines häufig verwendeten regulären Ausdrucks verbessern (z.B. in einer Schleife).

Bemerkungen

Die meisten Zeichen wie abc123 können ganz normal in einem regulären Ausdruck verwendet werden. Anders verhält es sich mit den Metazeichen \.*?+[{|()^$: Um ihre spezielle Bedeutung außer Kraft zu setzen, muss ihnen ein umgekehrter Schrägstrich vorangestellt werden. Zum Beispiel ist \. ein normaler Punkt und \\ ein normaler umgekehrter Schrägstrich. Um nicht nur ein Zeichen, sondern eine ganze Reihe von Zeichen als normale Zeichen zu behandeln, verwenden Sie \Q...\E. Zum Beispiel: \QNormaler Text\E.

Innerhalb eines regulären Ausdrucks können zum Escapen von Sonderzeichen wie Tabulator und Zeilenumbruch sowohl ein umgekehrtes Häkchen (`) als auch ein umgekehrter Schrägstrich (\) verwendet werden. Zum Beispiel ist `t dasselbe wie \t, es sei denn, die x-Option wird verwendet.

Grundlagen zum Thema "Reguläre Ausdrücke" finden Sie unter RegEx-Kurzübersicht.

RegExMatch(), RegEx-Kurzübersicht, Callouts in regulären Ausdrücken, StrReplace(), InStr(), StringReplace

Übliche Quellen für Textdaten: FileRead, UrlDownloadToFile, Clipboard, GUI-Eingabefelder

Beispiele

Allgemeine RegEx-Beispiele finden Sie unter RegEx-Kurzübersicht.

Meldet "abc123xyz", weil $ die Übereinstimmung am Ende erzwingt.

MsgBox % RegExReplace("abc123123", "123$", "xyz")

Meldet "123", weil eine Übereinstimmung dank der i-Option (nicht Groß-/Kleinschreibung-sensitiv) gefunden wurde.

MsgBox % RegExReplace("abc123", "i)^ABC")

Meldet "aaaXYZzzz" wegen der $1-Rückreferenz.

MsgBox % RegExReplace("abcXYZ123", "abc(.*)123", "aaa$1zzz")

Meldet eine leere Zeichenkette und speichert 2 in ErsetzungenAnzahl.

MsgBox % RegExReplace("abc123abc456", "abc\d+", "", ErsetzungenAnzahl)