Remarque
L’accès à cette page requiert une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page requiert une autorisation. Vous pouvez essayer de modifier des répertoires.
Fonction
S’applique à :
Databricks SQL
Databricks Runtime
Extrait la première chaîne dans str qui correspond à l’expression regexp et à l’index de groupe regex.
Syntaxe
regexp_extract(str, regexp [, idx] )
Arguments
-
str: expressionSTRINGà mettre en correspondance. -
regexp: une expressionSTRINGavec un modèle correspondant. -
idx: expression d’un nombre intégral facultatif supérieure ou égale à 0 avec 1 comme valeur par défaut.
Retours
STRING.
Si str, regexpou idx est NULL, le résultat est NULL.
Si regexp elle ne correspond à aucune partie de str, le résultat est une chaîne vide.
Si le modèle global correspond mais que le groupe spécifié par idx ne participe pas à la correspondance, le résultat est une chaîne vide.
La chaîne regexp doit être une expression régulière Java. Consultez Java modèles regex pour connaître la syntaxe prise en charge.
Lors de l’utilisation de littéraux, utilisez raw-literal (préfixe r) pour éviter le traitement préalable du caractère d’échappement.
regexp peut contenir plusieurs groupes. Les groupes de capture sont définis en englobant une partie du modèle entre parenthèses (...).
idx indique le groupe d’expressions régulières à extraire.
Un idx de 0 signifie correspondant à l’expression régulière entière.
La valeur par défaut est idx 1, ce qui signifie que le premier groupe de capture est retourné lorsqu’il idx est omis.
S’il idx est supérieur au nombre de groupes de capture définis dans regexp, Databricks génère une erreur.
Seule la première correspondance de l’in regexpstr est considérée. Pour extraire toutes les correspondances, utilisez regexp_extract_all.
Conditions d’erreur courantes
Exemples
Extraire des groupes de capture spécifiques
> SELECT regexp_extract('100-200', '(\\d+)-(\\d+)', 1);
100
> SELECT regexp_extract('100-200', '(\\d+)-(\\d+)', 2);
200
Utiliser idx 0 pour retourner la correspondance entière
> SELECT regexp_extract('Order: 100-200', '(\\d+)-(\\d+)', 0);
100-200
Idx par défaut est 1
Lorsqu’il idx est omis, le premier groupe de capture est retourné.
> SELECT regexp_extract('abc123def', '([a-z]+)(\\d+)');
abc
Aucune correspondance ne retourne une chaîne vide
> SELECT regexp_extract('hello world', '(\\d+)', 1);
L’entrée NULL retourne NULL
> SELECT regexp_extract(NULL, '(\\d+)', 1);
NULL
Utiliser des littéraux de chaîne brute pour éviter l’échappement double
Dans une chaîne SQL normale, les barres obliques inverses doivent être doublées (\\d à moyenne \d). Utilisez le r préfixe pour les littéraux de chaîne bruts pour écrire des modèles plus naturellement.
> SELECT regexp_extract('abc123', r'(\d+)', 1);
123
Extraire un domaine d’une URL
> SELECT regexp_extract('https://www.databricks.com/product', r'https?://([^/]+)', 1);
www.databricks.com
Extraire un composant d’une chaîne de date
> SELECT regexp_extract('Event on 2024-03-15', r'(\d{4})-(\d{2})-(\d{2})', 0);
2024-03-15
> SELECT regexp_extract('Event on 2024-03-15', r'(\d{4})-(\d{2})-(\d{2})', 2);
03
Groupe de capture facultatif qui ne participe pas à la correspondance
Lorsqu’un groupe est facultatif et ne correspond pas, une chaîne vide est retournée pour ce groupe.
> SELECT regexp_extract('ac', r'(a)(b)?(c)', 2);
Modèle regex non valide
> SELECT regexp_extract('abc', '[invalid', 0);
Error: INVALID_PARAMETER_VALUE.PATTERN