- Catégories :
REGEXP_SUBSTR¶
Renvoie la sous-chaîne qui correspond à une expression régulière dans une chaîne.
Syntaxe¶
Arguments¶
Obligatoire :
subjectLa chaîne à rechercher pour les correspondances.
patternModèle devant correspondre.
Pour des directives sur la spécification des modèles, voir Fonctions de chaîne (expressions régulières).
Facultatif :
positionNombre de caractères depuis le début de la chaîne pour lesquels la fonction commence à rechercher des correspondances. La valeur doit être un entier positif.
Par défaut :
1(la recherche d’une correspondance commence au premier caractère à gauche)occurrenceSpécifie la première occurrence du modèle à partir de laquelle il faut commencer à renvoyer les correspondances.
La fonction ignore les
occurrence - 1premières correspondances. Par exemple, s’il existe 5 correspondances et que vous spécifiez3pour l’argumentoccurrence, la fonction ignore les deux premières correspondances et renvoie les troisième, quatrième et cinquième correspondances.Par défaut :
1regex_parametersChaîne d’un ou plusieurs caractères spécifiant les paramètres utilisés pour la recherche de correspondances. Valeurs prises en charge :
Paramètre
Description
cCorrespondance sensible à la casse
iCorrespondance non sensible à la casse
mMode multiligne
eExtraire les sous-correspondances.
sLe caractère générique
.du mode à une ligne POSIX correspond à\nPar défaut :
cPour plus d’informations, voir Spécification des paramètres de l’expression régulière.
Note
Par défaut, REGEXP_SUBSTR renvoie la totalité de la partie correspondante du sujet. Toutefois, si le paramètre
e(pour « extraction ») est spécifié, REGEXP_SUBSTR ne renvoie que la partie du sujet qui correspond au premier groupe du motif. Sieest spécifié mais qu’ungroup_numn’est pas également spécifié, legroup_numest défini par défaut sur 1 (le premier groupe). S’il n’y a pas de sous-expression dans le motif, REGEXP_SUBSTR se comporte comme sien’était pas défini. Pour des exemples utilisante, voir Exemples dans cette rubrique.group_numSpécifie le groupe à extraire. Les groupes sont spécifiés à l’aide de parenthèses dans l’expression régulière.
Si un
group_numest 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 VARCHAR qui est la sous-chaine correspondante.
La fonction renvoie NULL dans les cas suivants :
Aucune correspondance n’est trouvée.
L’un des arguments est 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 currently aren’t supported.
Exemples¶
La documentation de la fonction REGEXP_INSTR contient de nombreux exemples utilisant à la fois REGEXP_SUBSTR et REGEXP_INSTR. Vous voudrez peut-être aussi regarder ces exemples.
Ces exemples utilisent les chaînes créées ci-dessous :
Les chaînes ont les caractéristiques suivantes :
La chaîne avec un
idde2contient plusieurs occurrences du mot « le ».La chaîne avec un
idde3contient plusieurs occurrences du mot « the » avec des espaces supplémentaires entre les mots.La chaîne avec un
idde4contient la séquence de caractères « the » à l’intérieur de plusieurs mots (« thespian » et « theater »), mais sans le mot « the » seul.
Les exemples suivants appellent la fonction REGEXP_SUBSTR :
Appeler la fonction REGEXP_SUBSTR dans une liste SELECT¶
Appelez la fonction REGEXP_SUBSTR dans une liste SELECT pour extraire ou afficher les valeurs qui correspondent à un modèle.
Cet exemple recherche la première occurrence du mot the, suivie d’un ou plusieurs caractères non-mots (par exemple, l’espace séparant les mots), suivis d’un ou plusieurs caractères mots.
Les « caractères Word » incluent non seulement les lettres a-z et A-Z, mais également le trait de soulignement (« _ ») et les chiffres décimaux 0-9, mais pas les espaces, la ponctuation, etc.
À partir de la position 1 de la chaîne, recherchez la deuxième occurrence du mot the, suivie d’un ou plusieurs caractères non-mots, suivis d’un ou plusieurs caractères mots.
À partir de la position 1 de la chaîne, recherchez la deuxième occurrence du mot the, suivie d’un ou plusieurs caractères non-mots, suivis d’un ou plusieurs caractères mots.
Au lieu de renvoyer l’intégralité de la correspondance, retourne uniquement le « groupe » (c’est-à-dire la partie de la sous-chaîne qui correspond à la partie de l’expression régulière entre parenthèses). Dans ce cas, la valeur renvoyée doit être le mot après « le ».
Cet exemple montre comment extraire le deuxième mot des première, deuxième et troisième correspondances d’un motif de deux mots dans lequel le premier mot est A. Cet exemple montre également qu’en essayant d’aller au-delà du dernier motif, Snowflake renvoie NULL.
Créer une table en premier et insérer des données :
Exécutez la requête :
Cet exemple montre comment récupérer les premier, deuxième et troisième groupes au sein de la première occurrence du motif. Dans ce cas, les valeurs renvoyées sont les lettres individuelles du mot MAN.
Voici quelques exemples supplémentaires.
Créer une table et insérer des données :
Renvoie la première correspondance contenant un o minuscule en faisant correspondre une limite de mot (\b), suivie de zéro ou de plusieurs caractères de mots (\S), la lettre o, puis zéro ou plusieurs caractères de mot jusqu’à la prochaine limite de mot :
Renvoie la première correspondance contenant un o minuscule, à partir du troisième caractère du sujet :
Renvoie la troisième correspondance contenant un o minuscule, à partir du troisième caractère du sujet :
Renvoie la troisième correspondance contenant un o minuscule , à partir du troisième caractère du sujet, avec une correspondance insensible à la casse :
Cet exemple montre que vous pouvez explicitement omettre tout paramètre d’expression régulière en spécifiant une chaîne vide.
L’exemple suivant illustre des occurrences qui se chevauchent : Créer une table en premier et insérer des données :
Exécutez une requête qui recherche la deuxième occurrence du modèle suivant dans chaque ligne : un signe de ponctuation suivi de chiffres et de lettres, suivi d’un signe de ponctuation.
L’exemple suivant crée un objet JSON à partir d’un journal d’accès du serveur HTTP Apache à l’aide de la correspondance de modèle et de la concaténation. Créer une table en premier et insérer des données :
Exécuter une requête :
Appeler la fonction REGEXP_SUBSTR dans une clause WHERE¶
Appelez la fonction REGEXP_SUBSTR dans une clause WHERE pour filtrer les lignes contenant des valeurs qui correspondent à un modèle. En utilisant la fonction, vous pouvez éviter plusieurs conditions OR.
L’exemple suivant interroge la table demo2 que vous avez créée précédemment pour renvoyer des lignes comprenant soit la chaîne best ou la chaîne thespian. Ajoutez IS NOT NULL à la condition pour renvoyer les lignes qui correspondent au modèle. C’est-à-dire les lignes où la fonction REGEXP_SUBSTR n’a pas renvoyé NULL :
Vous pouvez utiliser les conditions AND pour trouver des lignes qui correspondent à plusieurs modèles. Par exemple, la requête suivante renvoie des lignes comprenant soit la chaîne best ou la chaîne thespian et commencent par la chaîne It: