Ersetzt Text in einem String basierend auf einem regulären Ausdruck (regular expression).
StringRegExpReplace ( "test", "pattern", "replace" [, count = 0] )
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. |
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. |
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.
#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