Functions > String >


StringRegExpReplace

Remplace du texte, dans une chaîne, selon un modèle d'expression régulière.

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

Paramètres

test La chaîne à analyser
pattern L'expression régulière qui définit le critère de recherche. Consultez StringRegExp pour la syntaxe de définition du modèle.
replace Le texte destiné à remplacer le texte trouvé par l'expression régulière. Pour insérer un groupe de texte trouvé, \0 - \9 (ou $0 - $9) vous pouvez les utiliser en références arrière.
count [optionnel] Le nombre de fois où exécuter le remplacement de la chaîne. Par défaut, 0 pour un remplacement global de toutes les occurrences.

Valeur de retour

Success: Retourne la chaîne modifiée selon l'expression régulière. Testez @extended pour obtenir le nombre de remplacements effectués.
Echec: Définit @error <> 0.
@error: 2 = Modèle invalide. @extended = position de l'erreur dans le modèle.

Remarques

Pour séparer les remplacements avec référence arrière des nombres (remplacés) actuels, les encadrer avec des accolades, exemple: "${1}5".

Si un "\" doit être remplacé dans la chaîne il doit être doublé. Ceci est une conséquence du mécanisme des références arrière.

Les formats de remplacement de "\" et "$" sont les seuls formats valides pour les références arrière supportées.

Consultez aussi le tutoriel Expressions régulières, dans lequel vous pouvez exécuter un script pour tester votre expression régulière.

En relation

StringRegExp, StringReplace

Exemple

#include <MsgBoxConstants.au3>

Test1()
Test2()
Test3()

; Cet exemple illustre un remplacement simple. Il remplace les voyelles aeiou 
; par le caractère @.
Func Test1()
    Local $sInput = "Where have all the flowers gone, long time passing?"
    Local $sOutput = StringRegExpReplace($sInput, "[aeiou]", "@")
    Display($sInput, $sOutput)
EndFunc   ;==>Test1

; L'exemple suivant illustre l'utilisation des références arrière pour changer la date
;de MM/DD/AAAA en DD.MM.YYYY
Func Test2()
    Local $sInput = 'some text1 12/31/2009 01:02:03 some text2'& @CRLF & _
            'some text3 02/28/2009 11:22:33 some text4'
    Local $sOutput = StringRegExpReplace($sInput, '(\d{2})/(\d{2})/(\d{4})', ' $2.$1.$3 ')
    Display($sInput, $sOutput)
EndFunc   ;==>Test2

;L'exemple suivant illustre la nécessité d'une double barre oblique inverse
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)
    ; Formate la sortie.
    Local $sMsg = StringFormat("Entrée:\t%s\n\nOutput:\t%s", $sInput, $sOutput)
    MsgBox($MB_SYSTEMMODAL, "Résultat", $sMsg)
EndFunc   ;==>Display