Todos los productos
Search
Centro de documentos

Simple Log Service:Funciones de expresiones regulares

Última actualización: Sep 02, 2026

Utilice funciones de expresiones regulares para extraer, buscar coincidencias, reemplazar y dividir cadenas en consultas SQL y SPL.

Funciones de expresiones regulares

SLS admite las siguientes funciones de expresiones regulares, todas basadas en la sintaxis RE2.

Importante

Si desea utilizar cadenas en instrucciones analíticas, debe encerrarlas entre comillas simples (''). Las cadenas sin comillas o encerradas entre comillas dobles ("") indican nombres de campo o de columna. Por ejemplo,

'status'

indica la cadena status, mientras que

status

o

"status"

indican el campo de registro status.

Función

Sintaxis

Descripción

SQL

SPL

regexp_extract_all function

regexp_extract_all(x, regular expression)

Devuelve un arreglo con todas las subcadenas que coinciden con una expresión regular.

√

×

regexp_extract_all(x, regular expression, n)

Devuelve el grupo de captura especificado de todas las coincidencias como un arreglo.

√

×

regexp_extract function

regexp_extract(x, regular expression)

Devuelve la primera subcadena que coincide con una expresión regular.

√

√

regexp_extract(x, regular expression, n)

Devuelve el n-ésimo grupo de captura de la primera coincidencia.

√

√

regexp_extract_bool function

regexp_extract_bool(x, regular expression)

Convierte la primera coincidencia a BOOLEAN. Devuelve null si la conversión falla.

√

×

regexp_extract_bool(x, regular expression, n)

Convierte el grupo de captura especificado de la primera coincidencia a BOOLEAN. Devuelve null si la conversión falla.

√

×

regexp_extract_long function

regexp_extract_long(x, regular expression)

Convierte la primera coincidencia a BIGINT. Devuelve null si la conversión falla.

√

×

regexp_extract_long(x, regular expression, n)

Convierte el grupo de captura especificado de la primera coincidencia a BIGINT. Devuelve null si la conversión falla.

√

×

regexp_extract_double function

regexp_extract_double(x, regular expression)

Convierte la primera coincidencia a DOUBLE. Devuelve null si la conversión falla.

√

×

regexp_extract_double(x, regular expression, n)

Convierte el grupo de captura especificado de la primera coincidencia a DOUBLE. Devuelve null si la conversión falla.

√

×

regexp_extract_map function

regexp_extract_map(x, regular expression, keys)

Asigna las claves proporcionadas a sus correspondientes coincidencias de grupos de captura.

√

×

regexp_extract_map(x, regular expression)

Asigna el primer grupo de captura como claves y el segundo como valores.

√

×

regexp_like function

regexp_like(x, regular expression)

Comprueba si una cadena coincide con una expresión regular.

√

√

regexp_replace function

regexp_replace(x, regular expression)

Elimina todas las subcadenas que coinciden con una expresión regular.

√

√

regexp_replace(x, regular expression, replace string)

Reemplaza todas las subcadenas que coinciden con una expresión regular por una cadena de sustitución.

√

√

regexp_split function

regexp_split(x, regular expression)

Divide una cadena mediante una expresión regular y devuelve las subcadenas resultantes en un arreglo.

√

×

Nota

Para extraer una comilla simple (') con una función de expresión regular, escápela duplicándola como ''. Example 3 of the regexp_extract function demuestra este enfoque.

Función regexp_extract_all

Extrae todas las subcadenas que coinciden con una expresión regular de una cadena de origen.

Sintaxis

  • Devuelve todas las subcadenas coincidentes como un arreglo.

    regexp_extract_all(x, regular expression)
  • Devuelve todas las coincidencias de un grupo de captura especificado como un arreglo.

    regexp_extract_all(x, regular expression, n)

Parámetros

Parámetro

Descripción

x

La cadena de origen. Debe ser de tipo VARCHAR.

regular expression

La expresión regular. Debe contener grupos de captura cuando se especifica el parámetro n. Por ejemplo, (\d)(\d)(\d) especifica tres grupos de captura.

n

El índice del grupo de captura. Debe ser un entero mayor o igual a 1.

Valor devuelto

ARRAY

Ejemplos

  • Ejemplo 1: Extraer todos los dígitos del campo server_protocol.

    • Campo de muestra

      server_protocol:HTTP/2.0
    • Instrucción de consulta y análisis (Probar)

      *| SELECT regexp_extract_all(server_protocol, '\d+')
    • Resultados de la consulta y el análisis: La consulta devuelve ["2","0"] en la columna _col0, que corresponden a todas las subcadenas numéricas extraídas de HTTP/2.0.

  • Ejemplo 2: Extraer la subcadena 'Chrome' del campo http_user_agent y contar las solicitudes de Chrome.

    • Campo de muestra

      http_user_agent:Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/14.0.803.0 Safari/535.1
    • Instrucción de consulta y análisis (Probar)

      *| SELECT regexp_extract_all(http_user_agent, '(Chrome)',1) AS Chrome, count(*) AS count GROUP BY Chrome
    • Resultados de la consulta y el análisis: La columna Chrome devuelve ["Chrome"] y la columna count devuelve 103440.

Función regexp_extract

Extrae la primera subcadena que coincide con una expresión regular de una cadena de origen.

Sintaxis

  • Devuelve la primera subcadena que coincide con una expresión regular.

    regexp_extract(x, regular expression)
  • Devuelve la subcadena que coincide con el n-ésimo grupo de captura.

    regexp_extract(x, regular expression, n)

Parámetros

Parámetro

Descripción

x

La cadena de origen. Debe ser de tipo VARCHAR.

regular expression

La expresión regular. Puede contener grupos de captura. Por ejemplo, (\d)(\d)(\d) contiene tres grupos de captura.

n

El índice del grupo de captura (base 1). Debe ser un entero positivo.

Valor devuelto

Devuelve una cadena VARCHAR.

Ejemplos

SQL

  • Ejemplo 1: Extraer el primer dígito del campo server_protocol.

    • Campo de muestra

      server_protocol:HTTP/2.0
    • Instrucción de consulta (Probar)

      *|SELECT regexp_extract(server_protocol, '\d+')
    • La consulta devuelve una columna llamada _col0 con el valor 2.

  • Ejemplo 2: Extraer el nombre del archivo del campo request_uri y contar las solicitudes por archivo.

    • Campo de muestra

      request_uri:/request/path-3/file-5
    • Instrucción de consulta (Probar)

      * | SELECT regexp_extract(request_uri, '.*\/(file.*)', 1) AS file, count(*) AS count GROUP BY file
    • Resultado de muestra: La columna file es file-5 y la columna count es 17127.

  • Ejemplo 3: Extraer la comilla simple (') y los dígitos del campo message.

    • Campo de muestra

      message:error'1232
    • Instrucción de consulta

      * | SELECT regexp_extract(message, '''\d+') 
      Nota

      Para buscar una comilla simple ('), debe escaparla duplicándola como '' en la cadena de la expresión regular.

    • El resultado es '1232.

SPL

  • Ejemplo 1: Extraer el primer dígito del campo server_protocol.

    • Campo de muestra

server_protocol:HTTP/2.0
  • Instrucción de consulta

* | extend a = regexp_extract(server_protocol, '\d+')
  • Resultado

a:  2
  • Ejemplo 2: Extraer la parte del archivo del campo request_uri.

    • Campo de muestra

request_uri:/request/path-3/file-5
  • Instrucción de consulta

* | extend a = regexp_extract(request_uri, '.*\/(file.*)',1)
  • Resultado

El resultado es a: file-5.

  • Ejemplo 3: Extraer la comilla simple (') y los dígitos del campo message.

    • Campo de muestra

message:error'1232
  • Instrucción de consulta

* | extend a = regexp_extract(message, '''\d+') 

Nota

Para buscar una comilla simple ('), debe escaparla duplicándola como '' en la cadena de la expresión regular.

  • Resultado

1  12-19 10:39:33
   a: '1232

Función regexp_extract_bool

Extrae la primera subcadena coincidente y la convierte a BOOLEAN ("true"/"false", sin distinción entre mayúsculas y minúsculas). Devuelve null si la conversión falla.

Sintaxis

  • Convierte la primera coincidencia a BOOLEAN. Devuelve null si falla.

    regexp_extract_bool(x, regular expression)
  • Convierte el grupo de captura especificado de la primera coincidencia a BOOLEAN. Devuelve null si falla.

    regexp_extract_bool(x, regular expression, n)

Parámetros

Parámetro

Descripción

x

La cadena de origen. Este parámetro es de tipo VARCHAR.

regular expression

Una expresión regular que contiene grupos de captura. Por ejemplo, (\d)(\d)(\d) especifica tres grupos de captura.

n

El índice del grupo de captura que se va a extraer. Este parámetro es un entero con base 1.

Tipo de valor devuelto

Tipo BOOLEAN.

Ejemplos

  • Extraer un valor booleano de un campo.

    • Campo de muestra

      false 
    • Instrucción de consulta y análisis (Probar)

      *| select regexp_extract_bool('false', '[a-zA-Z]+')
    • Resultados de la consulta y el análisis

      Devuelve una única columna _col0 con una fila de datos. El valor es false.

Función regexp_extract_long

Extrae una subcadena que coincide con una expresión regular y la convierte a BIGINT. Devuelve null si la conversión falla.

Sintaxis

  • Extrae la primera coincidencia y la convierte a BIGINT.

    regexp_extract_long(x, regular expression)
  • Convierte el grupo de captura especificado de la primera coincidencia a BIGINT.

    regexp_extract_long(x, regular expression, n)

Parámetros

Parámetro

Descripción

x

La cadena de origen. Este parámetro es de tipo VARCHAR.

regular expression

Una expresión regular que contiene grupos de captura. Por ejemplo, (\d)(\d)(\d) contiene tres grupos de captura.

n

El índice del grupo de captura que se va a extraer. El índice es un entero con base 1.

Tipo de valor devuelto

BIGINT

Ejemplos

  • Extraer el número del campo time.

    • Campo de muestra

      time:19/Dec/2024:06:16:06
    • Instrucción de consulta (Probar)

      *|SELECT regexp_extract_long(time, '(\d{2})/', 1) 
    • Resultados de la consulta y el análisis

      Devuelve una columna llamada _col0 que contiene dos filas, cada una con el valor 19.

Función regexp_extract_double

Extrae una subcadena que coincide con una expresión regular y la convierte a DOUBLE. Devuelve null si la conversión falla.

Sintaxis

  • Convierte la primera coincidencia a DOUBLE. Devuelve null si falla.

    regexp_extract_double(x, regular expression)
  • Convierte el grupo de captura especificado de la primera coincidencia a DOUBLE. Devuelve null si falla.

    regexp_extract_double(x, regular expression, n)

Parámetros

Parámetro

Descripción

x

La cadena de origen. Su tipo debe ser VARCHAR.

regular expression

Una expresión regular que contiene grupos de captura. Por ejemplo, (\d)(\d)(\d) especifica tres grupos de captura.

n

El índice del grupo de captura que se va a extraer. El índice es un entero que comienza en 1.

Tipo de valor devuelto

double

Ejemplos

  • Extraer el número de punto flotante del campo server_protocol.

    • Campo de muestra

      server_protocol:HTTP/1.1
    • Instrucción de consulta y análisis (Probar)

      *|SELECT regexp_extract_double(server_protocol, '\d+\.\d+') 
    • Resultados de la consulta y el análisis

      Devuelve una columna llamada _col0. Esta columna contiene dos filas, cada una con el valor 1.1.

Función regexp_extract_map

Extrae subcadenas que coinciden con grupos de captura en una expresión regular y las devuelve como un mapa de clave-valor.

Sintaxis

  • Crea un mapa al emparejar las claves proporcionadas con las subcadenas coincidentes de los grupos de captura correspondientes.

regexp_extract_map(x, regular expression, keys)
  • Crea un mapa mediante una expresión regular con dos grupos de captura que coinciden con las claves y los valores, respectivamente.

regexp_extract_map(x, regular expression)

Parámetros

Parámetro

Descripción

x

La cadena de origen donde buscar. El tipo de dato es VARCHAR.

regular expression

Una expresión regular que contiene grupos de captura. Por ejemplo, (\d)(\d)(\d) especifica tres grupos de captura.

keys

Los nombres de clave para las subcadenas capturadas. El tipo de dato es ARRAY(VARCHAR). El número de claves debe coincidir con el número de grupos de captura en la expresión regular.

Tipo de valor devuelto

MAP(VARCHAR, VARCHAR)

Ejemplos

  • Ejemplo 1: Extraer el nombre del protocolo y la versión del campo server_protocol.

    • Campo de muestra

      server_protocol: 'HTTP/2.0'
    • Instrucción de consulta

      select regexp_extract_map(server_protocol, '(\w+)/([\d\.]+)', array['name', 'version']) as protocol
    • Resultados de la consulta y el análisis

      La consulta devuelve el siguiente mapa en la columna protocol: {"name":"HTTP","version":"2.0"}.

  • Ejemplo 2: Extraer todos los pares clave-valor del campo content.

    • Campo de muestra

      content: 'verb="GET" URI="/healthz" latency="45.911µs" userAgent="kube-probe/1.30+"'
    • Instrucción de consulta

      select regexp_extract_map(content, '(\w+)="([^"]*)"') as args
    • Datos de salida

      {"latency":"45.911µs","verb":"GET","userAgent":"kube-probe/1.30+","URI":"/healthz"}

Función regexp_like

Comprueba si una cadena coincide con una expresión regular.

Sintaxis

regexp_like(x, regular expression)

Parámetros

Parámetro

Descripción

x

La cadena de origen. Debe ser de tipo VARCHAR.

regular expression

El patrón de expresión regular con el que se busca coincidencia.

Tipo de valor devuelto

BOOLEAN

Ejemplos

SQL

Comprobar si el campo server_protocol contiene dígitos.

  • Campo de muestra

    server_protocol:HTTP/2.0
  • Instrucción de consulta y análisis (Probar)

    *| select regexp_like(server_protocol, '\d+')
  • La consulta devuelve dos filas. Ambos valores son true. Esto indica que el valor del campo server_protocol coincide con la expresión regular \d+ (contiene dígitos).

SPL

Comprobar si el campo server_protocol contiene dígitos.

  • Campo de muestra

server_protocol:HTTP/2.0
  • Instrucción de consulta y análisis

* |extend a = regexp_like(server_protocol, '\d+')
  • Resultados de la consulta y el análisis

1  12-18 19:34:20  1.2.3.4
        a: true

Función regexp_replace

Elimina o reemplaza subcadenas que coinciden con una expresión regular.

Sintaxis

  • Elimina todas las subcadenas de una cadena de origen que coinciden con una expresión regular.

    regexp_replace(x, regular expression)
  • Reemplaza todas las subcadenas que coinciden con una expresión regular por una cadena de reemplazo.

    regexp_replace(x, regular expression, replace string)

Parámetros

Parámetro

Descripción

x

Cadena de origen donde se realiza la búsqueda. Este parámetro debe ser de tipo VARCHAR.

regular expression

Patrón de la expresión regular.

replace string

Cadena de reemplazo. Si se omite, se eliminan las subcadenas coincidentes.

Tipo de valor devuelto

VARCHAR

Ejemplos

SQL

  • Ejemplo 1: En el campo region, reemplace los nombres de región que comienzan con cn por China y luego cuente el número de solicitudes provenientes de China.

    • Campo de muestra

      region:cn-shanghai
    • Instrucción de consulta y análisis (Test)

      * | select regexp_replace(region, 'cn.*','China') AS region, count(*) AS count GROUP BY region
    • Resultados de la consulta y el análisis: La consulta devuelve una sola fila donde la columna region es China y la columna count es 168871.

  • Ejemplo 2: Elimine el número de versión del campo server_protocol y cuente las solicitudes por protocolo.

    • Campo de muestra

      server_protocol:HTTP/2.0
    • Instrucción de consulta y análisis (Test)

      *| select regexp_replace(server_protocol, '.\d+') AS server_protocol, count(*) AS count GROUP BY server_protocol
    • Resultados de la consulta y el análisis: La consulta devuelve una sola fila donde server_protocol es HTTP y count es 168871.

SPL

  • Ejemplo 1: Reemplace todos los nombres de región en el valor del campo region que comienzan con 'cn' por China.

    • Campo de muestra

region:cn-shanghai
  • Instrucción de consulta y análisis

* | extend a = regexp_replace(region, 'cn.*','China')
  • Resultados de la consulta y el análisis

    1  12-18 19:34:20  1.2.3.4
       a: China
  • Ejemplo 2: Elimine el número de versión del valor del campo server_protocol.

    • Campo de muestra

server_protocol:HTTP/2.0
  • Instrucción de consulta y análisis (Test)

* | extend a = regexp_replace(server_protocol, '.\d+')
  • Resultados de la consulta y el análisis

La consulta devuelve una entrada de registro que incluye una marca de tiempo, la dirección IP de destino 1.2.3.4 y el campo server_protocol sin el número de versión.

Función regexp_split

Divide una cadena de origen en un arreglo de subcadenas mediante una expresión regular como delimitador.

Sintaxis

regexp_split(x, regular expression)

Parámetros

Parámetro

Descripción

x

Cadena de origen. Su tipo de datos es VARCHAR.

regular expression

Patrón de expresión regular utilizado como delimitador.

Tipo de valor devuelto

array

Ejemplo

Utilice una barra diagonal (/) para dividir el valor del campo request_uri.

  • Campo de muestra

    request_uri:/request/path-0/file-7
  • Instrucción de consulta y análisis (Test)

    * | SELECT regexp_split(request_uri,'/')
  • Los resultados de la consulta y el análisis son ["","request","path-0","file-7"].