Catégories :

Fonctions de chaîne (expressions régulières)

REGEXP_SUBSTR_ALL

Renvoie un ARRAY qui contient toutes les sous-chaînes qui correspondent à une expression régulière au sein d’une chaîne. Si aucune correspondance n’est trouvée, la fonction renvoie un ARRAY vide.

Alias :

REGEXP_EXTRACT_ALL

Voir aussi : Fonctions de chaîne (expressions régulières)

Syntaxe

REGEXP_SUBSTR_ALL( <subject> , <pattern> [ , <position> [ , <occurrence> [ , <regex_parameters> [ , <group_num> ] ] ] ] )
Copy

Arguments

Obligatoire :

subject

La chaîne à rechercher pour les correspondances.

pattern

Modèle devant correspondre.

Pour des directives sur la spécification des modèles, voir Fonctions de chaîne (expressions régulières).

Facultatif :

position

Nombre de caractères depuis le début de la chaîne pour lesquels la fonction commence à rechercher des correspondances.

Par défaut : 1 (la recherche d’une correspondance commence au premier caractère à gauche)

occurrence

Spécifie la première occurrence du modèle à partir de laquelle il faut commencer à renvoyer les correspondances. La fonction ignore les occurrence - 1 premières correspondances.

Par exemple, s’il existe 5 correspondances et que vous spécifiez 3 pour l’argument occurrence , la fonction ignore les deux premières correspondances et renvoie les troisième, quatrième et cinquième correspondances.

Par défaut : 1

regex_parameters

Chaîne d’un ou plusieurs caractères spécifiant les paramètres d’expression régulière utilisés pour la recherche de correspondances. Les valeurs prises en charge sont les suivantes :

  • c : sensible à la casse.

  • i : insensible à la casse.

  • m : mode multiligne.

  • e : extrait les sous-correspondances.

  • s : le caractère générique “.” correspond également à une nouvelle ligne.

Pour plus de détails, voir la documentation sur les paramètres des expressions régulières.

Par défaut : c

Note

Par défaut, REGEXP_SUBSTR_ALL renvoie la totalité de la partie correspondante du sujet. Toutefois, si le paramètre e (pour « extraction ») est spécifié, REGEXP_SUBSTR_ALL ne renvoie que la partie du sujet qui correspond au premier groupe du motif. Si e est spécifié mais qu’un group_num n’est pas également spécifié, le group_num est défini par défaut sur 1 (le premier groupe). S’il n’y a pas de sous-expression dans le motif, REGEXP_SUBSTR_ALL se comporte comme si e n’était pas défini. Pour des exemples utilisant e, voir Exemples dans cette rubrique.

group_num

Le paramètre group_num spécifie le groupe à extraire. Les groupes sont spécifiés à l’aide de parenthèses dans l’expression régulière.

Si un group_num est spécifié, Snowflake autorise l’extraction même si l’option 'e' n’a pas été spécifiée. Le 'e' est impliqué.

Snowflake prend en charge jusqu’à 1 024 groupes.

Pour des exemples utilisant group_num, voir les exemples de cette rubrique.

Renvoie

La fonction renvoie une valeur de type ARRAY. Le ARRAY contient un élément pour chaque sous-chaîne correspondante.

Si vous spécifiez group_num et que le modèle ne spécifie pas de groupement avec ce numéro, la fonction renvoie NULL. Par exemple, si le motif ne spécifie qu’un seul groupe (par exemple, a(b)c) et que vous utilisez 2 comme group_num, la fonction renvoie NULL.

Notes sur l’utilisation

Pour plus d’informations sur l’utilisation d’expressions régulières, voir Fonctions de chaîne (expressions régulières).

Détails du classement

Arguments with collation specifications are currently not supported.

Exemples

Le modèle de l’exemple suivant correspond à un « a » minuscule suivi d’un chiffre. L’exemple renvoie un ARRAY qui contient toutes les correspondances :

select regexp_substr_all('a1_a2a3_a4A5a6', 'a[[:digit:]]') as matches;
+---------+
| MATCHES |
|---------|
| [       |
|   "a1", |
|   "a2", |
|   "a3", |
|   "a4", |
|   "a6"  |
| ]       |
+---------+
Copy

L’exemple suivant commence à rechercher des correspondances à partir du deuxième caractère de la chaîne (2) :

select regexp_substr_all('a1_a2a3_a4A5a6', 'a[[:digit:]]', 2) as matches;
+---------+
| MATCHES |
|---------|
| [       |
|   "a2", |
|   "a3", |
|   "a4", |
|   "a6"  |
| ]       |
+---------+
Copy

L’exemple suivant renvoie les correspondances à partir de la troisième occurrence du modèle de la chaîne (3) :

select regexp_substr_all('a1_a2a3_a4A5a6', 'a[[:digit:]]', 1, 3) as matches;
+---------+
| MATCHES |
|---------|
| [       |
|   "a3", |
|   "a4", |
|   "a6"  |
| ]       |
+---------+
Copy

L’exemple suivant cherche une correspondance insensible à la casse (i) :

select regexp_substr_all('a1_a2a3_a4A5a6', 'a[[:digit:]]', 1, 1, 'i') as matches;
+---------+
| MATCHES |
|---------|
| [       |
|   "a1", |
|   "a2", |
|   "a3", |
|   "a4", |
|   "A5", |
|   "a6"  |
| ]       |
+---------+
Copy

L’exemple suivant cherche une correspondance insensible à la casse et renvoie la partie de la chaîne qui correspond au premier groupe (ie) :

select regexp_substr_all('a1_a2a3_a4A5a6', '(a)([[:digit:]])', 1, 1, 'ie') as matches;
+---------+
| MATCHES |
|---------|
| [       |
|   "a",  |
|   "a",  |
|   "a",  |
|   "a",  |
|   "A",  |
|   "a"   |
| ]       |
+---------+
Copy

L’exemple suivant montre que la fonction renvoie un ARRAY vide lorsqu’aucune correspondance n’est trouvée :

select regexp_substr_all('a1_a2a3_a4A5a6', 'b') as matches;
+---------+
| MATCHES |
|---------|
| []      |
+---------+
Copy