Remplace toutes les instances de chaînes de caractères correspondant à une expression ordinaire par une nouvelle chaîne de caractères.

REGEXREPLACE(chaîne_de_caractères; modèle; nouvelle_chaîne_de_caractères)
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.

Caractère.

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.

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 :

  • a{3} correspond à « aaa »

  • X{0,2}L correspond à « L », « XL » et « XXL »

  • AB-\d{2,}-YZ correspond à n'importe quel identificateur alphanumérique dont le corps de l'identificateur contient le préfixe « AB- », le suffixe « -YZ » et au moins deux chiffres

[]

Correspond à n'importe quel caractère unique entre les crochets

Par exemple :

  • [aeiou] correspond à a ou e ou i ou o ou u

  • [^aeiou] correspond à n'importe quel caractère qui n'est ni un a ni un e ni un i ni un o ni un u

  • [A-G] correspond à n'importe quelle lettre en majuscule comprise entre A et G

  • [A-Ga-g] correspond à n'importe quelle lettre en majuscules comprise entre A et G ou en minuscules entre a et g

  • [5-9] correspond à n'importe quel nombre compris entre 5 et 9

()

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 :

  • S(ch)?mid?th? correspond à « Smith » ou « Schmidt »

  • (56A.*){2} correspond à n'importe quel identificateur alphanumérique dans lequel la séquence « 56A » est présente au moins deux fois

  • (56A).*-.*\1 correspond à n'importe quel identificateur alphanumérique dans lequel la séquence « 56A » est présente au moins deux fois, avec un trait d'union entre les deux occurrences

\

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 :

  • (123).*\1 correspond à n'importe quel identificateur dans lequel le groupe de chiffres « 123 » apparaît au moins deux fois

  • ^(\d{3}).*\1 correspond à n'importe quel identificateur dans lequel les trois premiers chiffres se répètent

  • ^(\d{3}).*\1.*\1 correspond à n'importe quel identificateur dans lequel les trois premiers chiffres se répètent au moins deux fois

  • ^(\D)(\d)-.*\2\1 correspond à n'importe quel identificateur dans lequel le préfixe alphanumérique se répète avec l'inversion des caractères alphabétiques et numériques

$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 :

  • Si le modèle (\d{3})[ -]?(\d{3})[ -]?(\d{4}) est utilisé pour correspondre à différents formats de numéros de téléphone, la nouvelle_chaîne_de_caractères ($1)-$2-$3 peut être utilisée pour remplacer les numéros par eux-mêmes et standardiser la mise en forme. 999 123-4567 et 9991234567 deviennent tous les deux (999)-123-4567.

|

Correspond au caractère, aux blocs de caractères ou à l'expression avant ou après la barre verticale (|)

Par exemple :

  • a|b correspond à a ou à b

  • abc|def correspond à « abc » ou à « def »

  • Sm(i|y)th correspond à Smith ou à Smyth

  • [a-c]|[Q-S]|[x-z] correspond à l'une des lettres suivantes : a, b, c, Q, R, S, x, y, z

  • \s|- correspond à un espace ou à un trait d'union

\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 :

  • "Équipement uni" contient 4 limites de mots : une de chaque côté de l'espace et une au début et à la fin de la chaîne de caractères. "Équipement uni" est associé à l'expression ordinaire \b\w*\b\W\b\w*\b

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