# ExtractRegEx Fonction de script et de graphique

ExtractRegEx() extrait le texte d'une expression de chaîne d'entrée en utilisant le modèle d'expression régulière spécifié. Si aucune correspondance n'est trouvée, la fonction renvoie une valeur nulle.

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

Syntaxe :

ExtractRegEx (text, regex [, field\_no])

Type de données renvoyé : string

Arguments

| Argument | Description |
| --- | --- |
| text | Expression de chaîne contenant le texte à extraire dans la valeur de renvoi. |
| regex | Expression régulière à utiliser pour extraire le texte. |
| field\_no | Numéro de la correspondance à extraire. Cela s'avère utile lorsqu'il est possible de trouver plusieurs correspondances pour l'expression régulière dans le texte. Par exemple, spécifiez une valeur `4` pour extraire la quatrième correspondance. Cet argument est facultatif. Spécifiez une valeur négative pour inverser l'ordre des correspondances.<br><br>Les règles suivantes s'appliquent, que la fonction soit utilisée dans un script de chargement ou dans une expression de graphique :<br><br><ul> <li> <p>Si <span>field_no</span> est positif, la fonction renvoie une valeur, identifiant les correspondances de gauche à droite.</p> </li> <li> <p>Si <span>field_no</span> est négatif, la fonction renvoie une valeur, identifiant les correspondances de droite à gauche.</p> </li> </ul><br><br>Lors de l'utilisation de la fonction dans un script de chargement :<br><br><ul> <li> <p>Si vous utilisez la fonction <span>ExtractRegEx()</span> dans une instruction <span>LOAD</span> et si <span>field_no</span> est omis, la fonction génère autant d'enregistrements qu'il existe de correspondances.</p> </li> <li> <p>Si plusieurs champs sont chargés à l'aide de <span>ExtractRegEx()</span> et si aucun d'entre eux ne spécifie un argument <span>field_no</span>, les produits cartésiens de toutes les combinaisons sont créés.</p> </li> </ul><br><br>Lors de l'utilisation de la fonction dans une expression de graphique :<br><br><ul> <li> <p>Si <span>field_no</span> est omis, la valeur par défaut est <code>1</code>.</p> </li> </ul> |

Exemples de fonction

| Exemple | Résultat |
| --- | --- |
| `ExtractRegEx('a,b c;1 2,3','[a-z]\|[0-9]', 1)` | Renvoie `a`, qui est la première correspondance trouvée. |
| `ExtractRegEx('a,b c;1 2,3','[a-z]\|[0-9]', 2)` | Renvoie `b`, qui est la deuxième correspondance trouvée. |
| `ExtractRegEx('a,b c;1 2,3','[a-z]\|[0-9]', 4)` | Renvoie `1`, qui est la quatrième correspondance trouvée. |
| `ExtractRegEx('abc','a\|b',-1)` | Renvoie `b`. Lorsqu'une valeur négative est spécifiée, les correspondances sont comptées en sens inverse. |
| `ExtractRegEx('A,B C;1 2,3','[a-c]\|[4-9]')` | Renvoie une valeur nulle, car ExtractRegEx() est sensible à la casse et la variante non sensible à la casse n'a pas été utilisée. |
| `ExtractRegExI('A,B C;1 2,3','[a-c]\|[4-9]')` | Renvoie `A`, car la variante non sensible à la casse ExtractRegExI() a été utilisée. |

## Cas d'utilisation de ExtractRegEx

Vous pouvez utiliser Extract RegEx() pour extraire des informations à isoler de données pouvant également contenir d'autres informations (par exemple, un texte libre ou des chaînes JSON). Par exemple :

* Extraire d'un texte des adresses e-mail, des numéros de téléphone, des numéros de compte et d'autres informations.

* Extraire d'un texte des valeurs numériques (par exemple, des devises).

* Normaliser le formatage de données textuelles ou numériques.

## Exemple 1 – Script de chargement permettant d'extraire des adresses e-mail de chaînes JSON

[](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/StringFunctions/ExtractRegEx.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 `OrderDetails` contenant un champ `OrderJson`.

* Le champ `OrderJson` contient une chaîne JSON avec des données de commande. Le formatage tel que l'indentation et les sauts de ligne a été retiré de la chaîne JSON. Les données de commande contiennent des adresses e-mail à extraire sous forme de valeurs distinctes.

* Nouveau tableau `EmailAddresses`, chargé après `OrderDetails`. Dans l'instruction `EmailAddresses` LOAD, nous chargeons le champ `OrderJson` à partir du tableau `OrderDetails` et nous créons un nouveau champ calculé, `Email`, qui contient les adresses e-mail extraites. Le tableau `OrderDetails` est ensuite abandonné.

Nos besoins :

* Adresses e-mail dans un domaine spécifique : `example.com`.

* Adresses e-mail contenant n'importe quel nombre de caractères alphanumériques ainsi qu'un ensemble défini de caractères spéciaux.

Script de chargement

```
OrderDetails:

Load * Inline `
OrderJson
{"Orders":[{"order_id":"12345","customer":{"name":"John Doe","email":"john.doe@example.com"},"items":{"product":"Laptop","quantity":2,"price":1200},"total_price":2400},{"order_id":"12346","customer":{"name":"Jane Doe","email":"jane.doe@example.com"},"items":{"product":"Tablet","quantity":4,"price":400},"total_price":1600},{"order_id":"12347","customer":{"name":"Amalia Craig","email":"amalia.craig@example.com"},"items":{"product":"Desktop Computer","quantity":1,"price":1900},"total_price":1900},{"order_id":"12348","customer":{"name":"Ken Roberts","email":"ken.roberts@example.com"},"items":{"product":"Phone Charger Cable","quantity":110,"price":1900},"total_price":1210}]}
` (delimiter is '\t');

EmailAddresses:

Load OrderJson, ExtractRegEx(OrderJson, '[a-zA-Z0-9!#$%^&*-_+=~{|}\/.'']+@example.com') as Email Resident OrderDetails;

Drop table OrderDetails;
```

Résultats

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

* `Email`

Tableau de résultats

| Email |
| --- |
| amalia.craig@example.com |
| jane.doe@example.com |
| john.doe@example.com |
| ken.roberts@example.com |

Si vous ne spécifiez pas de valeur d'argument pour field\_no, toutes les correspondances sont automatiquement extraites sous forme de valeurs distinctes.

## Exemple 2 – Script de chargement permettant d'extraire des valeurs numériques de montants en devises

[](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/StringFunctions/ExtractRegEx.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 `Sales` contenant des données commerciales.

* Dans le tableau `Sales`, champ nommé `Amount`, qui contient les montants des transactions en USD. Ces montants sont exprimés sous forme de chaînes, qui comprennent des symboles et des codes de devise.

* Définition d'un champ personnalisé dans `Sales`, `OrderAmountNumeric_USD`, qui extrait chaque montant sous forme de valeur purement numérique. Ces données doivent se présenter au format numérique afin que nous puissions les utiliser dans des agrégations de graphique.

Script de chargement

```
SET DateFormat='MM-DD-YYYY';

Sales:

Load ExtractRegEx(Amount, '[0-9]+.[0-9]{2}') as OrderAmountNumeric_USD, * Inline `

OrderID, OrderDate, Product, Amount
1, '12-27-2024', Software, $100.31 USD
2, '12-28-2024', Electronics, $513.93 USD
3, '12-29-2024', Grocery, $34.66 USD
4, '12-30-2024', Furniture, $1124.58 USD
5, '12-31-2024', Software, $95.95 USD
6, '01-01-2025', Software, $601.00 USD
7, '01-02-2025', Grocery, $1534.20 USD
8, '01-03-2025', Produce, $51.49 USD
9, '01-04-2025', Home Improvement, $176.12 USD
10, '01-05-2025', Produce, $432.77 USD
11, '01-06-2025', Software, $270.01 USD
12, '01-07-2025', Electronics, $83.85 USD
13, '01-08-2025', Furniture, $65.65 USD
14, '01-09-2025', Electronics, $1526.39 USD
15, '01-10-2025', Software, $432.44 USD
16, '01-11-2025', Furniture, $888.15 USD
17, '01-12-2025', Furniture, $300.00 USD
18, '01-13-2025', Grocery, $109.53 USD
19, '01-14-2025', Furniture, $487.97 USD
20, '01-15-2025', Software, $65.09 USD
`;
```

Résultats

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

* `OrderID`

* `Amount`

* `OrderAmountNumeric_USD`

Tableau de résultats

| OrderID | Amount | OrderAmountNumeric\_USD |
| --- | --- | --- |
| 1 | $100.31 USD | 100.31 |
| 2 | $513.93 USD | 513.93 |
| 3 | $34.66 USD | 34.66 |
| 4 | $1124.58 USD | 1124.58 |
| 5 | $95.95 USD | 95.95 |
| 6 | $601.00 USD | 601.00 |
| 7 | $1534.20 USD | 1534.20 |
| 8 | $51.49 USD | 51.49 |
| 9 | $176.12 USD | 176.12 |
| 10 | $432.77 USD | 432.77 |
| 11 | $270.01 USD | 270.01 |
| 12 | $83.85 USD | 83.85 |
| 13 | $65.65 USD | 65.65 |
| 14 | $1526.39 USD | 1526.39 |
| 15 | $432.44 USD | 432.44 |
| 16 | $888.15 USD | 888.15 |
| 17 | $300.00 USD | 300.00 |
| 18 | $109.53 USD | 109.53 |
| 19 | $487.97 USD | 487.97 |
| 20 | $65.09 USD | 65.09 |

## Exemple 3 – Expressions de graphique permettant d'extraire des adresses e-mail de chaînes JSON

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

#### Expressions 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 `OrderDetails` contenant un champ `OrderJson`.

* Le champ `OrderJson` contient une chaîne JSON avec des données de commande. Le formatage tel que l'indentation et les sauts de ligne a été retiré de la chaîne JSON. Les données de commande contiennent des adresses e-mail à extraire sous forme de valeurs distinctes.

Nos besoins :

* Adresses e-mail dans un domaine spécifique : `example.com`.

* Adresses e-mail contenant n'importe quel nombre de caractères alphanumériques ainsi qu'un ensemble défini de caractères spéciaux.

Script de chargement

```
OrderDetails:

Load * Inline `
OrderJson
{"Orders":[{"order_id":"12345","customer":{"name":"John Doe","email":"john.doe@example.com"},"items":{"product":"Laptop","quantity":2,"price":1200},"total_price":2400},{"order_id":"12346","customer":{"name":"Jane Doe","email":"jane.doe@example.com"},"items":{"product":"Tablet","quantity":4,"price":400},"total_price":1600},{"order_id":"12347","customer":{"name":"Amalia Craig","email":"amalia.craig@example.com"},"items":{"product":"Desktop Computer","quantity":1,"price":1900},"total_price":1900},{"order_id":"12348","customer":{"name":"Ken Roberts","email":"ken.roberts@example.com"},"items":{"product":"Phone Charger Cable","quantity":110,"price":1900},"total_price":1210}]}
` (delimiter is '\t');
```

Résultats

Chargez les données et ouvrez une feuille. Créez une table et ajoutez chacune des expressions suivantes sous forme de dimensions calculées :

* `=ExtractRegEx(OrderJson,'[a-zA-Z0-9!#$%^&*-_+=~{|}\/.'']+@example.com',1)`

* `=ExtractRegEx(OrderJson,'[a-zA-Z0-9!#$%^&*-_+=~{|}\/.'']+@example.com',2)`

* `=ExtractRegEx(OrderJson,'[a-zA-Z0-9!#$%^&*-_+=~{|}\/.'']+@example.com',3)`

* `=ExtractRegEx(OrderJson,'[a-zA-Z0-9!#$%^&*-_+=~{|}\/.'']+@example.com',4)`

Tableau de résultats

| =ExtractRegEx(OrderJson,'[a-zA-Z0-9!#$%^&\*-\_+=~{\|}\/.'']+@example.com',1) | =ExtractRegEx(OrderJson,'[a-zA-Z0-9!#$%^&\*-\_+=~{\|}\/.'']+@example.com',2) | =ExtractRegEx(OrderJson,'[a-zA-Z0-9!#$%^&\*-\_+=~{\|}\/.'']+@example.com',3) | =ExtractRegEx(OrderJson,'[a-zA-Z0-9!#$%^&\*-\_+=~{\|}\/.'']+@example.com',4) |
| --- | --- | --- | --- |
| john.doe@example.com | jane.doe@example.com | amalia.craig@example.com | ken.roberts@example.com |

## 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/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/regular-expressions-qlik-analytics.htm)