Funktionreferenz


StringRegExpReplace

Beschreibung anzeigen in

Ersetzt Text in einem String basierend auf einem regulären Ausdruck (regular expression).

StringRegExpReplace ( "test", "pattern", "replace" [, count = 0] )

Parameter

test Der zu prüfende String.
pattern Der zu vergleichende reguläre Ausdruck. Siehe StringRegExp für die Definition vom Suchmuster.
replace Der Text, der den gefundenen Text des regulären Ausdrucks ersetzen soll. Es können auch Gruppentext wie z. B. \0 - \9 (oder $0 - $9) als Rückverweise verwendet werden (siehe Bemerkungen).
count [optional] Die Anzahl der Wiederholungen des Ersetzens in dem String. Der Standard ist 0. 0 ist für globales Ersetzen zu benutzen.

Rückgabewert

Erfolg: Der veränderte String basierend auf den regulären Ausdrücken. @extended liefert die Anzahl er durchgeführten Austausche.
Fehler: Setzt das @error Flag auf ungleich null.
@Error: 2 = Muster("Pattern") ungültig. @Extended = Offset des im Muster aufgetretenen Fehlers.

Bemerkungen

Um Rückverweise von aktuellen (ersetzten) Zahlen zu unterscheiden, sind sie mit geschweiften Klammern zu umgeben, z.B.: "${1}5".
Falls "\" in dem ersetzen String vorkommt, so muss dieser gedoppelt werden. Dies ist die Folge aus dem Rückverweis-Mechanismus.
Die "\" und "$" Ersatzformate sind die einzigen Rückverweisformat, die unterstützt werden.

Siehe auch Regular Expression Tutorial. Dort kann ein Script zum Testen von regulären Ausdrücken (regular expressions) gestartet werden.

Verwandte Funktionen

StringRegExp, StringReplace

Beispiel

#include <MsgBoxConstants.au3>

Test1()
Test2()
Test3()

; Dieses Beispiel zeigt grundlegendes Ersetzen. Es ersetzt die Vokale aeiou
; durch das @ Zeichen.
Func Test1()
    Local $sInput = "Wo sind all die Blumen hin, wo sind sie geblieben?"
    Local $sOutput = StringRegExpReplace($sInput, "[aeiou]", "@")
    Display($sInput, $sOutput)
EndFunc   ;==>Test1

; Das folgende Beispiel zeigt Rückverweise um das Datum
; von MM/DD/YYYY auf DD.MM.YYYY zu ändern
Func Test2()
    Local $sInput = 'etwas Text1 12/31/2009 01:02:03 etwas Text2' & @CRLF & _
            'etwas Text3 02/28/2009 11:22:33 etwas Text4'
    Local $sOutput = StringRegExpReplace($sInput, '(\d{2})/(\d{2})/(\d{4})', ' $2.$1.$3 ')
    Display($sInput, $sOutput)
EndFunc   ;==>Test2

; Das folgende Beispiel zeigt, wann doppelte Backslash benötigt werden
Func Test3()
    Local $sInput = '%CommonProgramFiles%\Microsoft Shared\'
    Local $sOutput = StringRegExpReplace($sInput, '%([^%]*?)%', 'C:\\WINDOWS\\Some Other Folder$')
    Display($sInput, $sOutput)
EndFunc   ;==>Test3


Func Display($sInput, $sOutput)
    ; Die Ausgabe formatieren.
    Local $sMsg = StringFormat("Eingabe:\t%s\n\nAusgabe:\t%s", $sInput, $sOutput)
    MsgBox($MB_SYSTEMMODAL, "Ergebnis", $sMsg)
EndFunc   ;==>Display