RegExReplace() [v1.0.45+]

Ersetzt ein oder mehr Vorkommen eines Suchmusters (regulärer Ausdruck) innerhalb einer Zeichenkette.

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

Parameter

Heuhaufen

Eine Zeichenkette, deren Inhalt 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 dem 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 das gleiche wie abc.

Ersatz

Eine reine Zeichenkette (kein regulärer Ausdruck), mit der jede Übereinstimmung ersetzt werden soll. Diese Zeichenkette kann Rückreferenzen enthalten, wie z. B. $1, die die in Heuhaufen gefundene Teilzeichenkette des ersten Teilsuchmusters verwendet. $0 bis $9 sind die einfachsten Rückreferenzen - $0 ist die Teilzeichenkette des gesamten Suchmusters, $1 ist die Teilzeichenkette des ersten Teilsuchmusters, $2 ist die zweite, und so weiter. Rückreferenznummern über 9 (und optional auch solche unter 9) müssen in geschweiften Klammern gesetzt werden; zum Beispiel ${10}, ${11} und so weiter. Handelt es sich um einen benannten Teilsuchmuster, umschließen Sie den Namen mit geschweiften Klammern; zum Beispiel ${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ß, die restlichen klein). $U1 und $U{1} beispielsweise repräsentieren die großgeschriebene Variante des ersten Teilsuchmusters.

Nicht existierende Rückreferenzen und solche, für deren Teilsuchmuster keine Übereinstimmung in Heuhaufen gefunden wurde - z. B. eines der Teilsuchmuster in (abc)|(xyz) - werden als leere Zeichenketten wiedergegeben.

AusgabeVarAnzahl

Geben Sie eine Variable an, in der die Anzahl erfolgter Ersetzungen gespeichert werden soll (0, wenn nichts ersetzt wurde).

Limit

Lässt man Limit weg, wird standardmäßig -1 verwendet, was alle Vorkommen in Heuhaufen ersetzen wird. Ansonsten können Sie die maximal zulässige Anzahl von Ersetzungen angeben. Der Heuhaufen-Bereich rechts neben der letzten Ersetzung bleibt unverändert.

StartPos

Lässt man StartPos weg, wird standardmäßig 1 verwendet (der Anfang von Heuhaufen). Ansonsten kann eine 2 angegeben werden, um beim zweiten Zeichen zu beginnen, eine 3, um beim dritten Zeichen zu beginnen, und so weiter. Wenn StartPos die Länge der Heuhaufen-Zeichenkette überschreitet, beginnt die Suche bei der leeren Zeichenkette am Ende der Heuhaufen-Zeichenkette (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 eine 0 angegeben werden, um beim letzten Zeichen zu beginnen, -1, um beim vorletzten Zeichen zu beginnen, und so weiter. Wenn StartPos versucht, über das linke Ende von Heuhaufen hinauszugehen, wird die gesamte Heuhaufen-Zeichenkette durchsucht.

Egal welchen Wert man als StartPos verwendet - der Rückgabewert ist immer eine Kopie der kompletten Heuhaufen-Zeichenkette; der einzige Unterschied besteht darin, dass ein größerer Teil ihrer linken Seite unverändert bleibt, wenn für StartPos ein anderer Wert als 1 verwendet wird.

Rückgabewert

Diese Funktion gibt eine veränderte Version der Heuhaufen-Zeichenkette zurück. Wenn nichts ersetzt werden konnte, wird die Heuhaufen-Zeichenkette unverändert zurückgegeben. Wenn ein Fehler auftritt (z. B. ein Syntaxfehler innerhalb von NadelRegEx), wird die Heuhaufen-Zeichenkette unverändert zurückgegeben (außer in Versionen vor 1.0.46.06, die "" zurückgaben) und ErrorLevel auf einen der unten genannten Werte außer 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

Unter Optionen finden Sie Modifikatoren wie z. B. i)abc, was die Groß-/Kleinschreibung-Sensitivität im Suchmuster "abc" ausschaltet.

Leistung

Um einfache Teilzeichenketten zu ersetzen, verwenden Sie StrReplace() oder StringReplace, weil es schneller als RegExReplace() ist.

Wenn Sie wissen, wie hoch die maximale Anzahl der Ersetzungen sein wird, geben Sie diesen Wert im Limit-Parameter an, um zugunsten der Leistung die Suche frühzeitig zu stoppen (dies könnte auch die Speicherauslastung des Systems während der Operation verringern). Geben Sie zum Beispiel ein Limit von 1 an, wenn Sie genau wissen, dass nur eine Übereinstimmung in der Nähe des Anfangs einer großen Zeichenkette gefunden wird.

Zur Verbesserung der Leistung werden die 100 zuletzt verwendeten regulären Ausdrücke zwischengespeichert (in kompilierter Form).

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

Bemerkungen

Die meisten Zeichen wie abc123 haben keine spezielle Funktion und können normal in einem regulären Ausdruck verwendet werden. Die Zeichen \.*?+[{|()^$ hingegen haben eine spezielle Funktion und müssen demzufolge mit einem umgekehrten Schrägstrich versehen werden, wenn ihre Funktion außer Kraft gesetzt werden soll. Zum Beispiel wird \. als normaler Punkt und \\ als normaler umgekehrter Schrägstrich interpretiert. 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 das gleiche wie \t.

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

Häufige Quellen von Textdaten: FileRead, UrlDownloadToFile, Clipboard, GUI-Eingabefelder

Beispiele

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

Meldet "abc123xyz", weil durch $ eine Übereinstimmung nur am Ende vorkommen darf.

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

Meldet "123", weil eine Übereinstimmung aufgrund der nicht-Groß-/Kleinschreibung-sensitiven Option möglich gemacht wurde.

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

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

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

Meldet eine leere Zeichenkette und speichert eine 2 in ErsetzungenAnzahl.

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