Remplace toutes les instances de chaînes de caractères correspondant à une expression ordinaire par une nouvelle chaîne de caractères.
Syntaxe
REGEXREPLACE(chaîne_de_caractères; modèle; nouvelle_chaîne_de_caractères)
Paramètres
Nom | Type | Description |
---|---|---|
chaîne |
caractère |
Le champ, l'expression ou la valeur littérale à tester pour un modèle correspondant. |
modèle |
caractère |
La chaîne de modèle (expression ordinaire) à rechercher. modèle peut contenir des caractères littéraux, des métacaractères ou une association des deux. Les caractères littéraux incluent tous les caractères alphanumériques, certains caractères de ponctuation et des caractères vides. La recherche respecte la casse, ce qui signifie que les caractères alphanumériques en majuscules et en minuscules doivent être explicitement spécifiés. |
nouvelle_chaîne_de_caractères | caractère |
La chaîne de caractères à utiliser pour remplacer toutes les valeurs correspondant au modèle. La chaîne de remplacement peut contenir des caractères littéraux, des groupes de caractères à partir de la chaîne de caractères d'origine (à l'aide de l'élément $int) ou une combinaison des deux. |
Sortie
Caractère.
Exemples
Exemples basiques
Utilisation des espaces
Renvoie "AB CD EF", en remplaçant plusieurs espaces entre les caractères textuels par une seule espace :
REGEXREPLACE("AB CD EF"; "\s+"; " ")
Renvoie les données des champs caractères avec l'espacement entre les mots standardisé sur une seule espace :
REGEXREPLACE(champ_caractère; "\s+"; " ")
Renvoie les données des champs caractères avec l'espacement entre les mots standardisé sur une seule espace. L'utilisation de la fonction BLANKS( ) dans nouvelle_chaîne_de_caractères plutôt qu'une espace littérale facilite la lecture des espaces ; elles sont donc moins susceptibles d'être oubliées :
REGEXREPLACE(champ_caractère; "\s+"; BLANKS(1))
Standardisation des numéros de téléphone
Renvoie "(123) 456-7890". La mise en forme du numéro de téléphone « 1234567890 » est standardisée.
REGEXREPLACE(SUBSTR("1234567890";1;14); "(\d{3})[\s-]*(\d{3})[\s-]*(\d{4})";"($1) $2-$3")
Renvoie les nombres dans le champ Numéro_Téléphone et standardise leur mise en forme :
REGEXREPLACE(Numéro_Téléphone; ".*(\d{3})[\s-\.\)]*(\d{3})[\s-\.]*(\d{4})"; "($1) $2-$3")
Extrait "123-456-7890" dans le texte environnant :
REGEXREPLACE("N° tél : 123-456-7890 (bureau)"; "(.*)(\d{3}[\s-\)\.]*\d{3}[\s-\.]*\d{4})(.*)"; "$2")
Extrait les numéros de téléphone du texte environnant dans le champ Commentaire et standardise leur mise en forme :
REGEXREPLACE(Commentaire; "(.*)(\d{3})[\s-\)\.]*(\d{3})[\s-\.]*(\d{4})(.*)";"($2) $3-$4")
Identification de formats génériques
Renvoie "9XXX-999xx", qui représente le format générique de la valeur spécifiée par chaîne_de_caractères ("1ABC-123aa") :
REGEXREPLACE(REGEXREPLACE(REGEXREPLACE("1ABC-123aa";"\d";"9");"[a-z]";"x");"[A-Z]"; "X")
Renvoie le format générique de tous les identificateurs dans le champ No_Facture :
REGEXREPLACE(REGEXREPLACE(REGEXREPLACE(No_Facture;"\d";"9");"[a-z]";"x");"[A-Z]"; "X")
Standardisation du format des noms
Renvoie "John David Smith" :
REGEXREPLACE("Smith, John David"; "^(\w+);(\s\w+)(\s\w+)?(\s\w+)?";"$2$3$4 $1")
Renvoie les noms dans le champ Nom_complet dans leur ordre ordinaire : Prénom (Deuxième prénom) (Troisième prénom) Nom :
REGEXREPLACE(Nom_complet; "^(\w+);(\s\w+)(\s\w+)?(\s\w+)?";"$2$3$4 $1")
Remarque
Les données des noms peuvent présenter diverses complications, comme des apostrophes dans des noms. La représentation des variations des données de noms requiert généralement des expressions ordinaires plus complexes que celle donnée dans l'exemple précédent.
Remarques
Fonctionnement
La fonction REGEXREPLACE( ) utilise une expression ordinaire pour rechercher des modèles correspondants dans les données et remplace les valeurs correspondantes par une nouvelle chaîne de caractères.
Par exemple :
REGEXREPLACE(champ_caractère, "\s+"; " ")
standardise l'espacement dans les données caractère en remplaçant une ou plusieurs espaces entre les caractères texte par une espace unique.
La portion de recherche de REGEXREPLACE( ) est identique à la fonction REGEXFIND( ). Pour des informations détaillées sur la fonctionnalité de recherche commune aux deux fonctions, consultez la section Fonction REGEXFIND( ).
Quand utiliser la fonction REGEXREPLACE( )
Utilisez la fonction REGEXREPLACE( ) à chaque fois que vous souhaitez rechercher et remplacer des données dans Analytics à l'aide d'une correspondance de modèles simple ou complexe.
Remplacement de caractères par eux-mêmes
Il est possible d'utiliser l'élément $int pour remplacer des caractères par eux-mêmes, ce qui permet de conserver les parties significatives des données, tout en standardisant ou en omettant les données environnantes ou fusionnées.
Vous trouverez ci-dessus plusieurs exemples d'utilisation de numéros de téléphone et de noms.
Pour utiliser l'élément $int, vous devez d'abord créer des groupes à l'aide de parenthèses ( ) dans la valeur modèle. Pour plus d'informations, consultez la section Fonction REGEXFIND( ).
Éviter la correspondance de caractères séquentiels
Il est possible d'éviter une correspondance de caractères séquentielle et de remplacer les sous-chaînes indépendamment de leur position l'une vis-à-vis de l'autre, en imbriquant les fonctions REGEXREPLACE( ).
Dans les deux exemples ci-dessous, le problème consiste à tirer un format générique des données source alphanumériques dans lesquelles des nombres et des lettres peuvent apparaître dans n'importe quel ordre. Sans connaître l'ordre des nombres et des lettres, comment créer la chaîne de caractères modèle ?
La solution consiste tout d'abord à rechercher-remplacer des nombres à l'aide de la fonction REGEXREPLACE( ) interne, puis à rechercher-remplacer des lettres à l'aide de la fonction REGEXREPLACE( ) externe.
Renvoie "999XXX" :
REGEXREPLACE(REGEXREPLACE("123ABC";"\d";"9");"[A-Z]";"X")
Renvoie "9X9X9X" :
REGEXREPLACE(REGEXREPLACE("1A2B3C";"\d";"9");"[A-Z]";"X")
Longueur et troncation des chaînes de remplacement
Lorsque vous utilisez REGEXREPLACE( ) pour créer un champ calculé, la longueur du champ calculé est identique à la longueur du champ d'origine.
Si la longueur de la chaîne de remplacement dépasse la longueur de la chaîne cible, la longueur globale de la chaîne augmente, ce qui aboutit à une troncation si la longueur du champ calculé ne peut pas adapter la longueur de chaîne augmentée.
Les caractères qui tracent la chaîne cible sont tronqués en premier ; ils sont ensuite suivis des caractères de fin de la chaîne de remplacement. Les exemples ci-dessous illustrent la troncation :
chaîne |
modèle |
nouvelle_chaîne_de_caractères |
Longueur de champ |
Résultat |
Caractères tronqués |
---|---|---|---|---|---|
x123x |
123 |
A |
5 |
"xAx" |
aucun |
x123x |
123 |
ABC |
5 |
"xABCx" |
aucun |
x123x |
123 |
ABCD |
5 |
"xABCD" |
"x" |
x123x |
123 |
ABCDE |
5 |
"xABCD" |
"x", "E" |
x123x |
123 |
ABCDE |
6 |
"xABCDE" |
"x" |
x123x |
123 |
ABCDE |
7 |
"xABCDEx" |
aucun |
Comment éviter la troncation
Pour éviter la troncation, utilisez la fonction SUBSTR( ) pour augmenter la longueur du champ, comme montré dans le deuxième exemple ci-dessous.
Renvoie "xABCD", qui tronque le caractère de remplacement "E" et le caractère existant "x" :
REGEXREPLACE("x123x";"123";"ABCDE")
Renvoie "xABCDEx", qui inclut tous les caractères de remplacement et les caractères existants non remplacés :
REGEXREPLACE(SUBSTR("x123x";1;10);"123";"ABCDE")
Métacaractères des expressions ordinaires
Le tableau suivant répertorie les métacaractères que vous pouvez utiliser avec REGEXFIND( ) et REGEXREPLACE( ) et décrit l'opération effectuée par chacun.
Une autre syntaxe, plus complexe et prise en charge par Analytics, existe pour les expressions ordinaires. Une explication complète d'une syntaxe supplémentaire sort de la portée du présent guide. De nombreuses ressources expliquant les expressions ordinaires sont disponibles sur Internet.
Analytics utilise l'implémentation ECMAScript des expressions ordinaires. La plupart des implémentations des expressions ordinaires utilisent une syntaxe principale courante.
Remarque
L'implémentation actuelle d'expressions ordinaires dans Analytics ne prend pas complètement en charge les langues de recherche différente de l'anglais.
Métacaractère |
Description |
---|---|
. |
Correspond à n'importe quel caractère (à l'exception d'un caractère de nouvelle ligne) |
? |
Correspond à 0 ou 1 occurrence de la valeur littérale, du métacaractère ou de l'élément qui précède immédiatement |
* |
Correspond à 0 ou plusieurs occurrences de la valeur littérale, du métacaractère ou de l'élément qui précède immédiatement |
+ |
Correspond à 1 ou plusieurs occurrences de la valeur littérale, du métacaractère ou de l'élément qui précède immédiatement |
{} |
Correspond au nombre d'occurrences spécifié de la valeur littérale, du métacaractère ou de l'élément qui précède immédiatement. Il est possible de spécifier un nombre exact, une plage ou une plage non finie. Par exemple :
|
[] |
Correspond à n'importe quel caractère unique entre les crochets Par exemple :
|
() |
Crée un groupe qui définit une séquence ou un bloc de caractères, qui peut ensuite être traité comme une seule unité. Par exemple :
|
\ |
Caractère d'échappement permettant d'indiquer que le caractère suivant immédiatement est un caractère littéral. Utilisez le caractère d'échappement si vous souhaitez faire correspondre littéralement des métacaractères. Par exemple, \( trouve une parenthèse gauche et \\ trouve une barre oblique inverse. Utilisez le caractère d'échappement si vous souhaitez faire correspondre littéralement l'un des caractères suivants : ^ $ . * + ? = ! : | \ ( ) [ ] { } Les autres caractères de ponctuation comme l'esperluette (&) ou le signe arobase (@) n'exigent pas de caractère d'échappement. |
\int |
Indique qu'un groupe, défini auparavant avec des parenthèses ( ), se répète. int est un entier qui identifie la position séquentielle du groupe défini précédemment vis-à-vis des autres groupes. Ce métacaractère peut être utilisé dans le paramètre modèle à la fois dans both REGEXFIND( ) et dans REGEXREPLACE( ). Par exemple :
|
$int |
Indique qu'un groupe trouvé dans une chaîne de caractères cible est utilisé dans une chaîne de remplacement. int est un entier qui identifie la position séquentielle du groupe dans la chaîne de caractères cible vis-à-vis des autres groupes. Ce métacaractère peut être uniquement utilisé dans le paramètre nouvelle_chaîne_de_caractères dans REGEXREPLACE( ). Par exemple :
|
| |
Correspond au caractère, aux blocs de caractères ou à l'expression avant ou après la barre verticale (|) Par exemple :
|
\w |
Correspond à un caractère de mot (a à z, A à Z, 0 à 9 et le caractère de soulignement _ ) |
\W |
Correspond à un caractère de non-mot (non compris entre a et z ni entre A et Z ni entre 0 et 9 ni le caractère de soulignement _ ) |
\d |
Correspond à n'importe quel nombre (décimale) |
\D |
Correspond à n'importe quel nombre (tout caractère qui n'est pas une décimale) |
\s |
Correspond à un espace (valeur vide) |
\S |
Correspond à tout non-espace (caractère non vierge) |
\b |
Correspond à une limite de mots (entre des caractères \w et \W) Les limites de mots n'utilisent pas d'espace eux-mêmes. Par exemple :
Astuce Outre les espaces, les limites de mots peuvent émaner de virgules, points et autres caractères de non-mot. Par exemple, l'expression suivante juge le résultat comme T (« true », vrai) : REGEXFIND("jsmith@example.net"; "\bexample\b")
|
^ |
Correspond au début d'une chaîne de caractères Entre crochets [ ], ^ inverse le contenu |
$ |
Correspond à la fin d'une chaîne de caractères |
Fonctions associées
Si vous souhaitez rechercher des modèles de mise en correspondance sans les remplacer, utilisez la Fonction REGEXFIND( ).