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.
Se aplica a:
Databricks SQL
Databricks Runtime
Una expresión regular (regex) es un patrón que describe un conjunto de cadenas. Varios Azure Databricks operadores y funciones SQL toman una expresión regular para que coincida, busque, cuente, extraiga, reemplace o divida texto:
- Operador rlike y operador regexp : pruebe si una cadena coincide con un patrón.
- regexp_like función: pruebe si una cadena coincide con un patrón.
- regexp_count función: cuente cuántas veces coincide un patrón.
- regexp_instr función: devuelve la posición de la primera coincidencia.
- regexp_substr función: devuelve la primera subcadena coincidente.
- regexp_extract y regexp_extract_all funciones: devuelve un grupo de captura de la primera coincidencia o de todas las coincidencias.
- regexp_replace función: reemplace las coincidencias por una cadena de reemplazo.
- función split : divida una cadena alrededor de las coincidencias de un patrón.
Los operadores like e ilikeno usan expresiones regulares. Usan un lenguaje de patrones más sencillo basado en _ y %.
Motor regex
Azure Databricks evalúa expresiones regulares mediante el motor de Javajava.util.regex.
Los patrones deben seguir Java sintaxis de expresión regular, que es ampliamente compatible con expresiones regulares de estilo Perl, pero difiere en algunos detalles.
Para obtener la referencia completa y autoritativa, consulte la documentación de Java Pattern clase.
En las secciones siguientes se describen las construcciones más usadas.
Clase de caracteres
| Construir | Coincidencias |
|---|---|
. |
Cualquier carácter único excepto un terminador de línea (a menos que se establezca la s marca). |
[abc] |
Cualquiera de los caracteres enumerados: a, bo c. |
[^abc] |
Cualquier carácter único que noa sea , bo c. |
[a-z] |
Cualquier carácter del intervalo a a través zde . |
\d, \D |
Un dígito ([0-9]); \D coincide con cualquier no dígito. |
\w, \W |
Un carácter de palabra ([a-zA-Z_0-9]); \W coincide con cualquier carácter que no sea de palabra. |
\s, \S |
Carácter de espacio en blanco; \S coincide con cualquier carácter que no sea de espacio en blanco. |
Delimitadores y límites
| Construir | Coincidencias |
|---|---|
^ |
Inicio de la entrada (o de una línea con la m marca). |
$ |
Final de la entrada (o de una línea con la m marca). |
\b, \B |
Límite de palabras; \B coincide con un límite que no sea de palabras. |
Cuantificadores
Los cuantificadores especifican cuántas veces debe coincidir el elemento anterior.
De forma predeterminada, los cuantificadores son expansos y coinciden tanto como sea posible. Anexe ? para hacer que un cuantificador sea renuente (coincida lo menos posible), por ejemplo .*?.
| Construir | Coincide con el elemento anterior... |
|---|---|
* |
Cero o más veces. |
+ |
Una o varias veces. |
? |
Cero o una vez. |
{n} |
Exactamente n las veces. |
{n,} |
Al menos n veces. |
{n,m} |
Entre n y m horas. |
Grupos y alternancia
| Construir | Description |
|---|---|
(...) |
Un grupo de captura. Use el índice de grupo con regexp_extract. |
(?:...) |
Un grupo que no es de captura. Grupos sin capturar la coincidencia. |
a\|b |
Alternancia. Coincide con a o b. |
Marcas insertadas
Coloque una marca al principio del patrón para cambiar la coincidencia de todo el patrón.
| Bandera | Effect |
|---|---|
(?i) |
Coincidencia sin distinción entre mayúsculas y minúsculas. |
(?s) |
Modo Dotall.
. coincide con los terminadores de línea. |
(?m) |
Modo multilínea.
^ y $ coinciden en saltos de línea. |
(?x) |
Modo de comentarios. Omite los espacios en blanco sin escape en el patrón. |
Por ejemplo, (?i)ste(v\|ph)en coincide con Steven, stevene STEPHEN independientemente del caso.
Literales de escape y cadena
Para que coincida con un carácter que también sea un metacaracter regex (como ., *, (, [o \), preceda a una barra diagonal inversa.
Por ejemplo, \. coincide con un punto literal y \\ coincide con una barra diagonal inversa literal.
Dado que una barra diagonal inversa también es el carácter de escape en literales de cadena SQL normales, debe duplicar cada barra diagonal inversa que pretende pasar al motor de expresiones regulares.
Por ejemplo, para pasar el patrón \d+ a una función, escríbalo como '\\d+' en un literal de cadena normal.
Para evitar este doble escape, use un raw-literal (r prefijo), que deshabilita el preprocesamiento de caracteres de escape.
En un literal sin procesar, escriba el patrón exactamente como el motor regex espera:
-- Regular string literal: backslashes must be doubled.
> SELECT regexp_substr('item 42 in stock', '\\d+');
42
-- Raw literal: write the pattern as-is.
> SELECT regexp_substr('item 42 in stock', r'\d+');
42
Patrones comunes
Los siguientes patrones cubren tareas frecuentes. Se escriben como literales sin formato para que las barras diagonales inversas pasen al motor regex sin cambios. Los patrones de correo electrónico, dirección URL e IP son ilustraciones intencionadamente simples, no validadores estrictos.
| Objetivo | Pattern |
|---|---|
| Entero, firmado opcionalmente | r'-?\d+' |
| Número decimal | r'-?\d+(\.\d+)?' |
| Una palabra | r'\w+' |
Solo palabra cat completa |
r'\bcat\b' |
| Dirección de correo electrónico (simple) | r'[\w.%+-]+@[\w.-]+\.\w{2,}' |
| Host en una dirección URL | r'https?://([^/]+)' |
| Dirección IPv4 (no comprueba de 0 a 255) | r'\d{1,3}(\.\d{1,3}){3}' |
Fecha ISO (YYYY-MM-DD) |
r'\d{4}-\d{2}-\d{2}' |
| Espacios en blanco iniciales o finales | r'^\s+\|\s+$' |
| Número de teléfono de EE. UU. (simple) | r'\d{3}-\d{3}-\d{4}' |
Word límites (\b) coinciden con un word completo en lugar de una subcadena:
-- 'cat' as a standalone word
> SELECT 'the cat sat on the mat' rlike r'\bcat\b';
true
-- 'cat' only as part of a larger word
> SELECT 'category' rlike r'\bcat\b';
false
Combine un prefijo literal con un cuantificador para extraer un token estructurado, como un identificador de pedido:
> SELECT regexp_substr('Ref: ORD-12345 shipped on 2024-03-15', r'ORD-\d+');
ORD-12345
Elección de la función correcta
Use esta tabla para elegir la función que coincide con el objetivo.
| Quieres... | Use |
|---|---|
| Compruebe si una cadena coincide. | rlike / regexp / regexp_like |
| Devuelve la primera subcadena coincidente. | regexp_substr |
| Devuelve un grupo de captura. | regexp_extract |
| Devuelve todas las coincidencias. | regexp_extract_all |
| Devuelve la posición de una coincidencia. | regexp_instr |
| Contar el número de coincidencias. | regexp_count |
| Reemplace las coincidencias por otro texto. | regexp_replace |
| Dividir una cadena alrededor de las coincidencias. | split |
Coincide con un patrón simple _ / % . |
como / ilike |