RegExReplace

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

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

Parameter

Heuhaufen

Typ: Zeichenkette

Die Zeichenkette, die durchsucht und ersetzt werden soll. Kann eine binäre Null enthalten.

NadelRegEx

Typ: Zeichenkette

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.

NadelRegEx kann keine binären Nullen enthalten, aber \x00 kann als Platzhalter für eine binäre Null in Heuhaufen verwendet werden.

Ersatz

Typ: Zeichenkette

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

Typ: VarRef

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

Limit

Typ: Integer

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

Typ: Integer

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

Geben Sie eine negative StartPos an, um an dieser Position von rechts zu beginnen. Zum Beispiel kann -1 angegeben werden, um beim letzten Zeichen zu beginnen, -2, um beim vorletzten Zeichen zu beginnen, und so weiter. Wenn StartPos über das linke Ende von Heuhaufen hinausgeht, wird alles in Heuhaufen durchsucht.

Geben Sie 0 an, um am Ende von Heuhaufen zu beginnen, d.h. an der Position rechts vom letzten Zeichen. Dies kann mit nullbreiten Behauptungen wie (?<=a) verwendet werden.

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

Typ: Zeichenkette

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.

Fehlerbehandlung

Ein Error wird ausgelöst, wenn:

Einzelheiten finden Sie unter RegExMatch.

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, da es schneller ist 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

Übliche Quellen für Textdaten: FileRead, Download, A_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)