Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Función
Se aplica a:
Databricks SQL
Databricks Runtime
Extrae la primera cadena de str que coincide con la expresión regexp y corresponde al índice de grupo regex.
Sintaxis
regexp_extract(str, regexp [, idx] )
Argumentos
-
str: expresiónSTRINGque se va a comparar. -
regexp: expresiónSTRINGcon un patrón de comparación. -
idx: expresión de número entero opcional mayor o igual que 0 con valor predeterminado de 1.
Devoluciones
STRING.
Si str, regexpo idx es NULL, el resultado es NULL.
Si regexp no coincide con ninguna parte de str, el resultado es una cadena vacía.
Si el patrón general coincide, pero el grupo especificado por idx no participa en la coincidencia, el resultado es una cadena vacía.
La cadena regexp debe ser una expresión regular Java. Consulte Java regex patterns para obtener la sintaxis admitida.
Al usar literales, utilice raw-literal (prefijo r) para evitar el procesamiento previo de caracteres de escape.
regexp puede contener varios grupos. Los grupos de captura se definen mediante la inclusión de parte del patrón entre paréntesis (...).
idx indica qué grupo de expresiones regulares se va a extraer.
Un valor idx de 0 significa una coincidencia con toda la expresión regular.
El valor predeterminado de idx es 1, lo que significa que se devuelve el primer grupo de captura cuando idx se omite.
Si idx es mayor que el número de grupos de captura definidos en regexp, Databricks genera un error.
Solo se considera la primera coincidencia de regexp en str . Para extraer todas las coincidencias, use regexp_extract_all.
Condiciones de error comunes
Ejemplos
Extracción de grupos de captura específicos
> SELECT regexp_extract('100-200', '(\\d+)-(\\d+)', 1);
100
> SELECT regexp_extract('100-200', '(\\d+)-(\\d+)', 2);
200
Use idx 0 para devolver toda la coincidencia
> SELECT regexp_extract('Order: 100-200', '(\\d+)-(\\d+)', 0);
100-200
Idx predeterminado es 1
Cuando idx se omite, se devuelve el primer grupo de captura.
> SELECT regexp_extract('abc123def', '([a-z]+)(\\d+)');
abc
Ninguna coincidencia devuelve una cadena vacía
> SELECT regexp_extract('hello world', '(\\d+)', 1);
La entrada NULL devuelve NULL
> SELECT regexp_extract(NULL, '(\\d+)', 1);
NULL
Uso de literales de cadena sin formato para evitar el escape doble
En una cadena SQL normal, las barras diagonales inversas deben duplicarse (\\d para significar \d). Use el r prefijo para los literales de cadena sin formato para escribir patrones de forma más natural.
> SELECT regexp_extract('abc123', r'(\d+)', 1);
123
Extracción de un dominio de una dirección URL
> SELECT regexp_extract('https://www.databricks.com/product', r'https?://([^/]+)', 1);
www.databricks.com
Extracción de un componente de una cadena de fecha
> 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
Grupo de captura opcional que no participa en la coincidencia
Cuando un grupo es opcional y no coincide, se devuelve una cadena vacía para ese grupo.
> SELECT regexp_extract('ac', r'(a)(b)?(c)', 2);
Patrón regex no válido
> SELECT regexp_extract('abc', '[invalid', 0);
Error: INVALID_PARAMETER_VALUE.PATTERN