# SubFieldRegEx - fonction de script et fonction de graphique

SubFieldRegEx() extrait le texte d'une expression de chaîne d'entrée en utilisant le modèle d'expression régulière spécifié comme délimiteur. 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 SubFieldRegExI() pour effectuer des opérations de regex non sensibles à la casse.

SubFieldRegEx (text, regex\_delimiter [, field\_no])

chaîne

Arguments

| Argument | Description |
| --- | --- |
| text | Texte de chaîne d'entrée dans lequel rechercher un modèle d'expression régulière. |
| regex\_delimiter | Expression de chaîne contenant l'expression régulière à utiliser comme délimiteur. Vous pouvez spécifier plus d'un délimiteur dans le même modèle d'expression régulière en les séparant par un caractère `\|` (barre verticale). |
| field\_no | Valeur entière indiquant le numéro de la subdivision à extraire. Par exemple, spécifiez une valeur `4` pour extraire la quatrième sous-division. Cet argument est facultatif.<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>SubFieldRegEx()</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>SubFieldRegEx()</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 |
| --- | --- |
| `SubFieldRegEx('a,b c;1 2,3',' \|,\|;', 1)` | Renvoie `a`. Dans cet exemple, trois caractères de délimitation sont spécifiés (espace, virgule et point-virgule). |
| `SubFieldRegEx('a;b;c;1;2;3',';', 2)` | Renvoie `b`. Dans ce cas, un seul caractère de délimitation est spécifié (point-virgule). |
| `SubFieldRegEx('a,b c;1 2,3',' \|,\|;', 4)` | Renvoie `1`. |

## Cas d'utilisation

Vous pouvez utiliser SubFieldRegEx() pour extraire plusieurs valeurs individuelles d'une liste délimitée. Par exemple, si vous disposez d'une liste séparée par des virgules contenue dans un bloc plus important de langage naturel, vous pouvez utiliser cette fonction pour isoler chaque valeur individuelle de la liste dans un nouvel enregistrement dans votre modèle de données.

## Exemple 1 – Script de chargement permettant de séparer des balises par transaction

[](https://help.qlik.com/en-US/sense/Subsystems/Hub/Content/Sense_Hub/Scripting/StringFunctions/SubFieldRegEx.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 `Transaction_By_Tag` qui contient initialement des données de transaction. Ces données sont traitées de sorte à extraire les valeurs de balise individuelles dans de nouveaux enregistrements.

* Création d'un champ, `TransactionTag`, permettant de stocker les valeurs de balise extraites.

Dans le champ contenant les balises de transaction, plusieurs balises sont contenues dans des chaînes de texte, séparées par des délimiteurs. Le délimiteur peut être l'un des caractères suivants : , | ;

Script de chargement

```
Transaction_By_Tag:

Load SubFieldRegEx(Tags, ',|;|\|') as TransactionTag,
* Inline [
ID	Product	Tags	Amount
1	Product A	Special order,Eligible for return,Warranty included	100.93
2	Product B	Ineligible for return|No warranty available	51.11
3	Product C	No warranty available	12.83
4	Product B	Special order;Liquidation sale;Warranty included	209.48
] (delimiter is '\t');

drop fields Tags;
```

Résultats

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

* `ID`

* `Product`

* `TransactionTag`

Tableau de résultats

| ID | Product | TransactionTag |
| --- | --- | --- |
| 1 | Product A | Eligible for return |
| 1 | Product A | Warranty included |
| 1 | Product A | Special order |
| 2 | Product B | No warranty available |
| 2 | Product B | Ineligible for return |
| 3 | Product C | No warranty available |
| 4 | Product B | Liquidation sale |
| 4 | Product B | Special order |
| 4 | Product B | Warranty included |

Cet exemple montre que, en cas d'utilisation dans un script de chargement, SubFieldRegEx() renvoie une ligne distincte pour chaque correspondance trouvée dans la chaîne d'entrée.

## Exemple 2 – Expressions de graphique permettant de séparer les balises par transaction

[](https://help.qlik.com/en-US/sense/Subsystems/Hub/Content/Sense_Hub/Scripting/StringFunctions/SubFieldRegEx.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 `Transaction_By_Tag` qui contient des données de transaction.

* Champ, `Tags`, qui contient des chaînes de texte permettant de stocker toutes les balises associées à une transaction.

Nos besoins :

* Dans le champ contenant les balises de transaction, plusieurs balises sont contenues dans des chaînes de texte, séparées par des délimiteurs. Le délimiteur peut être l'un des caractères suivants : , | ;

* Nous voulons utiliser des expressions de graphique pour séparer chaque balise dans son propre champ, avec jusqu'à trois balises possibles à ajouter à une transaction.

Script de chargement

```
Transaction_By_Tag:

Load * Inline [
ID	Product	Tags	Amount
1	Product A	Special order, Eligible for return, Warranty included	100.93
2	Product B	Ineligible for return | No warranty available	51.11
3	Product C	No warranty available	12.83
4	Product B	Special order;Liquidation sale;Warranty included	209.48
] (delimiter is '\t');
```

Résultats

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

* `ID`

* `Tags`

Ajoutez ces dimensions calculées :

* 

  `=SubFieldRegEx(Tags, ',|;|\|', 1)`

* 

  `=SubFieldRegEx(Tags, ',|;|\|', 2)`

* 

  `=SubFieldRegEx(Tags, ',|;|\|', 3)`

Tableau de résultats

| ID | Tags | =SubFieldRegEx(Tags, ',\|;\|\\|', 1) | =SubFieldRegEx(Tags, ',\|;\|\\|', 2) | =SubFieldRegEx(Tags, ',\|;\|\\|', 3) |
| --- | --- | --- | --- | --- |
| 1 | Special order, Eligible for return, Warranty included | Special order | Eligible for return | Warranty included |
| 2 | Ineligible for return \| No warranty available | Ineligible for return | No warranty available | - |
| 3 | No warranty available | No warranty available | - | - |
| 4 | Special order;Liquidation sale;Warranty included | Special order | Liquidation sales | Warranty included |

## 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)