# ReplaceRegEx - fonction de script et fonction de graphique

ReplaceRegEx() renvoie une chaîne après avoir remplacé une ou plusieurs correspondances entre une chaîne d'entrée et un modèle d'expression régulière spécifié. Le texte qui remplace le texte correspondant est spécifié dans l'argument to\_str. La fonction fonctionne de gauche à droite, mais, si vous spécifiez une valeur occurrence négative, la fonction lit de droite à gauche.

Cette fonction effectue des opérations de regex sensibles à la casse. Sinon, vous pouvez utiliser la variante ReplaceRegExI() pour effectuer des opérations de regex non sensibles à la casse.

ReplaceRegEx (text, regex, to\_str [, occurrence])

chaîne

Arguments

| Argument | Description |
| --- | --- |
| text | Texte de chaîne d'entrée à remplacer, entièrement ou partiellement, par le nouveau texte de to\_str. |
| regex | Expression régulière qui détermine dans quelles conditions remplacer le texte. Les correspondances entre cet argument et l'argument text sont remplacées. |
| to\_str | Nouveau texte à utiliser pour remplacer le contenu existant de text. |
| occurrence | Numéro de la correspondance (entre le texte d'entrée et l'expression régulière) à remplacer par le nouveau texte.<br><br>Cet argument est facultatif. S'il est omis, la valeur par défaut est 0. Lorsqu'une valeur 0 est utilisée, ou si l'argument est omis, toutes les correspondances entre text et regex sont remplacées par to\_str.<br><br>Vous pouvez spécifier une valeur négative pour occurrence afin d'identifier les correspondances de droite à gauche. |

Exemples de fonction

| Exemple | Résultat |
| --- | --- |
| `ReplaceRegEx('abc123','[0-9]','x')` | Renvoie `abcxxx`. Dans cet exemple, l'ensemble du texte de la chaîne d'entrée qui correspond au modèle de regex est remplacé par le nouveau texte. |
| `ReplaceRegEx('abc123','[0-9]','x',1)` | Renvoie `abcx23`. Seule la première occurrence d'une correspondance entre la chaîne d'entrée et le modèle de regex est remplacée. |
| `ReplaceRegEx('abc123','[0-9]','x',4)` | Renvoie `abc123`. Il n'existe que trois correspondances possibles entre la chaîne d'entrée et le modèle de regex, de sorte qu'aucune modification n'est effectuée. |
| `ReplaceRegEx('ABC123','[a-c]','5')` | Renvoie `ABC123`. Aucune modification n'est effectuée, car ReplaceRegEx() est sensible à la casse et la variante non sensible à la casse n'est pas utilisée. |
| `ReplaceRegExI('ABC123','[a-c]','5')` | Renvoie `555123`. La variante non sensible à la casse de la fonction, ReplaceRegExI(), est utilisée. |

## Cas d'utilisation

Vous pouvez utiliser ReplaceRegEx() pour modifier le texte afin de respecter les normes de formatage et de conformité, en particulier lorsqu'il existe des modèles complexes dans les données. Par exemple, vous pouvez reformater les chaînes de numéros de téléphone de sorte que seules les valeurs numériques soient incluses.

Si nécessaire, vous pouvez également utiliser cette fonction pour masquer les informations sensibles telles que les informations personnelles identifiables (PII), afin qu'elles ne soient pas affichées aux utilisateurs qui analysent votre application.

## Exemple 1 – Script de chargement permettant de mettre à jour les adresses e-mail des employés

[](https://help.qlik.com/en-US/sense/Subsystems/Hub/Content/Sense_Hub/Scripting/StringFunctions/ReplaceRegEx.htm)

#### Script de chargement et résultats

Vue d'ensemble

Ouvrez l'éditeur de chargement de données et ajoutez le script de chargement ci-dessous à une nouvelle section.

Le script de chargement contient :

* Tableau `Employees` contenant les adresses e-mail des employés d'une entreprise.

* Création d'un nouveau champ, `Email_Updated`, pour effectuer une opération de recherche et de remplacement sur les valeurs du champ `Email_Original`.

Après le changement de nom de l'entreprise, toutes les adresses e-mail ont été mises à jour pour refléter le nouveau nom.

Nos besoins :

* Convertir toutes les références de domaine `test.com` en `newcompanyname.com`.

* Nous devons utiliser des opérations de regex non sensibles à la casse.

Script de chargement

```
Employees:

Load 
ReplaceRegExI(Email_Original, '@[a-zA-Z0-9.-]*\.?test\.com', '@newcompanyname.com') as Email_Updated,
* Inline [
ID, Email_Original
1, john_doe@test.com
2, jane_doe@test.com
3, Michael_Andrews@test.com
4, charlie_kent@test.com
5, frances_johnson@test.com
6, rebecca_smith@test.com
];
```

Résultats

Chargez les données et ouvrez une feuille. Créez une table et ajoutez ces champs comme dimensions :

* `ID`

* `Email_Original`

* `Email_Updated`

Tableau de résultats

| ID | Email\_Original | Email\_Updated |
| --- | --- | --- |
| 1 | john\_doe@test.com | john\_doe@newcompanyname.com |
| 2 | jane\_doe@test.com | jane\_doe@newcompanyname.com |
| 3 | Michael\_Andrews@test.com | Michael\_Andrews@newcompanyname.com |
| 4 | charlie\_kent@support.test.com | charlie\_kent@newcompanyname.com |
| 5 | frances\_johnson@test.com | frances\_johnson@newcompanyname.com |
| 6 | rebecca\_smith@hr.test.com | rebecca\_smith@newcompanyname.com |

## Exemple 2 – Script de chargement permettant de formater des codes ISBN

[](https://help.qlik.com/en-US/sense/Subsystems/Hub/Content/Sense_Hub/Scripting/StringFunctions/ReplaceRegEx.htm)

#### Script de chargement et résultats

Vue d'ensemble

Ouvrez l'éditeur de chargement de données et ajoutez le script de chargement ci-dessous à une nouvelle section.

Le script de chargement contient :

* Variables `ISBN_13` et `ISBN_10` qui stockent les expressions régulières à utiliser pour les modèles de chaîne ISBN de 13 chiffres et de 10 chiffres, respectivement.

* Tableau `Employees` contenant des valeurs numériques brutes pour les codes de livre ISBN. Le tableau contient des ISBN de 13 chiffres et de 10 chiffres.

* Plusieurs opérations pour extraire chaque partie de l'ISBN, puis renvoyer une chaîne affichant le code complet au format standard prévu. Nous utilisons une combinaison de ReplaceRegEx(), MatchRegEx(), ExtractRegExGroup() et Pick().

Nos besoins :

* Nous voulons formater les nombres en un texte plus lisible à l'aide du formatage standardisé :

  * ISBN ###-#-####-####-#

  * ISBN #-###-#####-#

Script de chargement

```
Set ISBN_13 = '^([0-9]{3})([0-9]{1})([0-9]{4})([0-9]{4})([0-9]{1})$';
Set ISBN_10 = '^([0-9]{1})([0-9]{3})([0-9]{5})([0-9]{1})$';

Formatted_Codes:

Load
Pick(MatchRegEx(ISBN_Unformatted, '$(ISBN_13)', '$(ISBN_10)'), ReplaceRegEx(ISBN_Unformatted, '$(ISBN_13)', 'ISBN ' & ISBN_Component1 & '-' & ISBN_Component2 & '-' & ISBN_Component3 & '-' & ISBN_Component4 & '-' & ISBN_Component5), ReplaceRegEx(ISBN_Unformatted, '$(ISBN_10)', 'ISBN ' & ISBN_Component1 & '-' & ISBN_Component2 & '-' & ISBN_Component3 & '-' & ISBN_Component4)) as ISBN_Formatted;

Load *,
Pick(MatchRegEx(ISBN_Unformatted, '$(ISBN_10)', '$(ISBN_13)'), ExtractRegExGroup(ISBN_Unformatted, '$(ISBN_10)', 1, 1), ExtractRegExGroup(ISBN_Unformatted, '$(ISBN_13)', 1, 1)) as ISBN_Component1,
Pick(MatchRegEx(ISBN_Unformatted, '$(ISBN_10)', '$(ISBN_13)'), ExtractRegExGroup(ISBN_Unformatted, '$(ISBN_10)', 2, 1), ExtractRegExGroup(ISBN_Unformatted, '$(ISBN_13)', 2, 1)) as ISBN_Component2,
Pick(MatchRegEx(ISBN_Unformatted, '$(ISBN_10)', '$(ISBN_13)'), ExtractRegExGroup(ISBN_Unformatted, '$(ISBN_10)', 3, 1), ExtractRegExGroup(ISBN_Unformatted, '$(ISBN_13)', 3, 1)) as ISBN_Component3,
Pick(MatchRegEx(ISBN_Unformatted, '$(ISBN_10)', '$(ISBN_13)'), ExtractRegExGroup(ISBN_Unformatted, '$(ISBN_10)', 4, 1), ExtractRegExGroup(ISBN_Unformatted, '$(ISBN_13)', 4, 1)) as ISBN_Component4,
Pick(MatchRegEx(ISBN_Unformatted, '$(ISBN_10)', '$(ISBN_13)'), ExtractRegExGroup(ISBN_Unformatted, '$(ISBN_10)', 5, 1), ExtractRegExGroup(ISBN_Unformatted, '$(ISBN_13)', 5, 1)) as ISBN_Component5
inline `
ISBN_Unformatted
1233123412340
0122012301234
0001012301232
0111234567
5552555555553
2224222222222
1901234568
3333333333333
5551515151513
2321232323231
2444444444
8880999900000
`;
```

Résultats

Chargez les données et ouvrez une feuille. Créez une table et ajoutez ce champ comme dimension :

* `ISBN_Formatted`

Tableau de résultats

| ISBN\_Formatted |
| --- |
| ISBN 000-1-0123-0123-2 |
| ISBN 0-111-23456-7 |
| ISBN 1-901-23456-8 |
| ISBN 2-444-44444-4 |
| ISBN 012-2-0123-0123-4 |
| ISBN 123-3-1234-1234-0 |
| ISBN 222-4-2222-2222-2 |
| ISBN 232-1-2323-2323-1 |
| ISBN 333-3-3333-3333-3 |
| ISBN 555-1-5151-5151-3 |
| ISBN 555-2-5555-5555-3 |
| ISBN 888-0-9999-0000-0 |

## Exemple 3 – Expression de graphique permettant de mettre à jour les adresses e-mail secondaires

[](https://help.qlik.com/en-US/sense/Subsystems/Hub/Content/Sense_Hub/Scripting/StringFunctions/ReplaceRegEx.htm)

#### Expression de graphique et résultats

Vue d'ensemble

Ouvrez l'éditeur de chargement de données et ajoutez le script de chargement ci-dessous à une nouvelle section.

Le script de chargement contient :

* Tableau `Employees` contenant les adresses e-mail des employés d'une entreprise. Celles-ci sont stockées dans une seule chaîne pour chaque employé, contenant chacune plusieurs adresses e-mail.

Nos besoins :

* Les adresses e-mail secondaires doivent être mises à jour de sorte à utiliser le domaine `newcompanyname.com`. Nous ne voulons pas mettre à jour les adresses e-mail principales.

* Nous devons utiliser des opérations de regex non sensibles à la casse.

Script de chargement

```
Employees:

Load * Inline [
ID, Emails
1, Primary: john_doe@test.com Secondary: john_michael_doe@example.com
2, Primary: jane_doe@test.com Secondary: jane_tabitha_doe_doe@example.com
3, Primary: Michael_Andrews@test.com Secondary: Michael_John_Andrews@example.com
4, Primary: charlie_kent@test.com Secondary: charlie_peter_kent@example.com
5, Primary: frances_johnson@test.com Secondary: frances_johnson@example.com
6, Primary: rebecca_smith@test.com Secondary: rebecca_danielle_smith@example.com
];
```

Résultats

Chargez les données et ouvrez une feuille. Créez une table et ajoutez ces champs comme dimensions :

* `ID`

* `Emails`

Ajoutez la dimension calculée suivante :

```
=ReplaceRegExI(Emails,'@[a-zA-Z0-9.-]*\.?[a-zA-Z0-9]*\.com','@newcompanyname.com',2)
```

Tableau de résultats

| ID | Emails | =ReplaceRegExI(Emails,'@[a-zA-Z0-9.-]\*\.?example\.com','@newcompanyname.com',2) |
| --- | --- | --- |
| 1 | Primary: john\_doe@test.com Secondary: john\_michael\_doe@example.com | Primary: john\_doe@test.com Secondary: john\_michael\_doe@newcompanyname.com |
| 2 | Primary: jane\_doe@test.com Secondary: jane\_tabitha\_doe\_doe@example.com | Primary: jane\_doe@test.com Secondary: jane\_tabitha\_doe\_doe@newcompanyname.com |
| 3 | Primary: Michael\_Andrews@test.com Secondary: Michael\_John\_Andrews@example.com | Primary: Michael\_Andrews@test.com Secondary: Michael\_John\_Andrews@newcompanyname.com |
| 4 | Primary: charlie\_kent@test.com Secondary: charlie\_peter\_kent@example.com | Primary: charlie\_kent@test.com Secondary: charlie\_peter\_kent@newcompanyname.com.com |
| 5 | Primary: frances\_johnson@test.com Secondary: frances\_johnson@example.com | Primary: frances\_johnson@test.com Secondary: frances\_johnson@newcompanyname.com |
| 6 | Primary: rebecca\_smith@test.com Secondary: rebecca\_danielle\_smith@example.com | Primary: rebecca\_smith@test.com Secondary: rebecca\_danielle\_smith@newcompanyname.com |

En spécifiant une valeur 2 pour l'argument occurrence, nous sommes en mesure de mettre à jour uniquement la deuxième instance correspondant au modèle de regex.

## En savoir plus

* [Utilisation d'expressions régulières dans les scripts de chargement et les expressions de graphique](https://help.qlik.com/fr-FR/sense/May2025/Subsystems/Hub/Content/Sense_Hub/Scripting/regular-expressions-qlik-analytics.htm)