Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Funzione
Si applica a:
Databricks SQL
Databricks Runtime
Estrae la prima stringa in str che corrisponde all'espressione regexp e corrisponde all'indice del gruppo regex.
Sintassi
regexp_extract(str, regexp [, idx] )
Argomenti
-
strSTRING: espressione di cui trovare la corrispondenza. -
regexpSTRING: espressione con un criterio di ricerca corrispondente. -
idx: espressione numerica integrale facoltativa maggiore o uguale a 0 con il valore predefinito 1.
Valori restituiti
Un oggetto STRING.
Se str, regexpo idx è NULL, il risultato è NULL.
Se regexp non corrisponde ad alcuna parte di str, il risultato è una stringa vuota.
Se il criterio complessivo corrisponde ma il gruppo specificato da idx non partecipa alla corrispondenza, il risultato è una stringa vuota.
La stringa regexp deve essere un'espressione regolare Java. Per la sintassi supportata, vedere Java pattern regex.
Quando si usano valori letterali, usare raw-literal (r prefisso) per evitare la pre-elaborazione dei caratteri di escape.
regexp può contenere più gruppi. I gruppi di acquisizione vengono definiti racchiudendo parte del modello tra parentesi (...).
idx indica il gruppo regex da estrarre.
Un idx valore pari a 0 indica la corrispondenza dell'intera espressione regolare.
Il valore predefinito di idx è 1, ovvero il primo gruppo di acquisizione viene restituito quando idx viene omesso.
Se idx è maggiore del numero di gruppi di acquisizione definiti in regexp, Databricks genera un errore.
Viene considerata solo la prima corrispondenza di regexp in str . Per estrarre tutte le corrispondenze, usare regexp_extract_all.
Condizioni di errore comuni
Esempi
Estrarre gruppi di acquisizione specifici
> SELECT regexp_extract('100-200', '(\\d+)-(\\d+)', 1);
100
> SELECT regexp_extract('100-200', '(\\d+)-(\\d+)', 2);
200
Usare idx 0 per restituire l'intera corrispondenza
> SELECT regexp_extract('Order: 100-200', '(\\d+)-(\\d+)', 0);
100-200
Idx predefinito è 1
Quando idx viene omesso, viene restituito il primo gruppo di acquisizione.
> SELECT regexp_extract('abc123def', '([a-z]+)(\\d+)');
abc
Nessuna corrispondenza restituisce una stringa vuota
> SELECT regexp_extract('hello world', '(\\d+)', 1);
L'input NULL restituisce NULL
> SELECT regexp_extract(NULL, '(\\d+)', 1);
NULL
Usare valori letterali stringa non elaborati per evitare l'escape doppio
In una stringa SQL normale, le barre rovesciate devono essere raddoppiate (\\d per indicare \d). Usare il r prefisso per i valori letterali stringa non elaborati per scrivere modelli in modo più naturale.
> SELECT regexp_extract('abc123', r'(\d+)', 1);
123
Estrarre un dominio da un URL
> SELECT regexp_extract('https://www.databricks.com/product', r'https?://([^/]+)', 1);
www.databricks.com
Estrarre un componente da una stringa di data
> 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
Gruppo di acquisizione facoltativo che non partecipa alla corrispondenza
Quando un gruppo è facoltativo e non corrisponde, viene restituita una stringa vuota per tale gruppo.
> SELECT regexp_extract('ac', r'(a)(b)?(c)', 2);
Modello regex non valido
> SELECT regexp_extract('abc', '[invalid', 0);
Error: INVALID_PARAMETER_VALUE.PATTERN