Fonction regexp_extract

S’applique à :case marquée oui Databricks SQL case marquée oui 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 : expression STRING à mettre en correspondance.
  • regexp : une expression STRING avec 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