En este artículo se proporciona información general sobre la sintaxis de expresión regular admitida por Lenguaje de consulta Kusto (KQL), que es la sintaxis de la biblioteca RE2.
Hay una serie de operadores y funciones de KQL que realizan la coincidencia de cadenas, la selección y la extracción con expresiones regulares, como matches regex, parsey replace_regex().
En KQL, las expresiones regulares deben codificarse como literales de cadena y seguir las reglas de comillas de cadena. Por ejemplo, la expresión \A regular RE2 se representa en KQL como "\\A". La barra diagonal inversa adicional indica que la otra barra diagonal inversa forma parte de la expresión \Aregular .
Información general sobre la sintaxis
En la tabla siguiente se proporciona información general sobre la sintaxis de expresiones regulares RE2, que se usa para escribir expresiones regulares en Kusto.
Elemento Syntax
Descripción
Literales únicos
Los caracteres individuales coinciden a sí mismos, excepto los metacaractores (* + ? ( ) |), que tienen significados únicos como se describe en las filas siguientes.
Metacaracteres
Para buscar coincidencias con un metacaracter literalmente, escape con barras diagonales inversas. Por ejemplo, la expresión \+ regular coincide con un carácter más (+).
Alternancia
Alterne dos expresiones con para crear una nueva expresión que coincida con | cualquiera de las expresiones. Por ejemplo, e1 | e2 coincide e1 con o e2.
Concatenación
Concatene dos expresiones para crear una nueva expresión que coincida con la primera expresión seguida de la segunda. Por ejemplo, e1e2 las coincidencias seguidas e1 de e2.
Repetición
Los metacaractores ?, +y * son operadores de repetición. Por ejemplo, e1? coincide con cero o una aparición de e1, e1+ coincide con una o varias repeticiones de e1y e1* coincide con una secuencia de cero o más, posiblemente diferentes, cadenas que coinciden con e1.
Nota
Los operadores de expresión regular se evalúan en este orden: alternancia (|), concatenación (expresiones en paralelo) y repetición (?, +, *). Use paréntesis para controlar el orden de evaluación.
Expresiones de un solo carácter
Ejemplo
Descripción
.
cualquier carácter, incluida posiblemente la nueva línea (s=true)
clase de caracteres de Unicode (nombre de una sola letra)
\p{Greek}
clase de caracteres Unicode
\PN
clase de caracteres de Unicode negada (nombre de una sola letra)
\P{Greek}
clase de caracteres Unicode negada
Compuestos
Ejemplo
Descripción
xy
x seguido de y
x\|y
x o y (preferir x)
Repeticiones
Ejemplo
Descripción
x*
cero o más x, prefiere más
x+
uno o varios x, prefieren más
x?
cero o uno x, prefiere uno
x{n,m}
n o n+1 o ... o mx, prefiere más
x{n,}
n o más x, prefiere más
x{n}
Exactamente nx
x*?
cero o más x, prefiere menos
x+?
uno o varios x, prefieren menos
x??
cero o uno x, prefiere cero
x{n,m}?
n o n+1 o ... o mx, prefiere menos
x{n,}?
n o más x, prefiere menos
x{n}?
Exactamente nx
x{}
(≡ x*) (NO COMPATIBLE) VIM
x{-}
(≡ x*?) (NO COMPATIBLE) VIM
x{-n}
(≡ x{n}?) (NO COMPATIBLE) VIM
x=
(≡ x?) (NO COMPATIBLE) VIM
Restricción de implementación: los formularios de recuento x{n,m}, x{n,}y x{n} rechazan formularios que crean un recuento de repeticiones mínimo o máximo por encima de 1000. Las repeticiones ilimitadas no están sujetas a esta restricción.
Repeticiones posesivas
Ejemplo
Descripción
x*+
cero o más x, posesivo (NO COMPATIBLE)
x++
uno o varios x, posesivo (NO COMPATIBLE)
x?+
cero o uno x, posesivo (NO COMPATIBLE)
x{n,m}+
n O... o mx, posesivo (NO COMPATIBLE)
x{n,}+
n o más x, posesivo (NO COMPATIBLE)
x{n}+
exactamente nx, posesivo (NO COMPATIBLE)
Agrupar
Ejemplo
Descripción
(re)
grupo de captura numerado (submatch)
(?P<name>re)
con nombre & grupo de captura numerado (submatch)
(?<name>re)
con nombre & grupo de captura numerado (submatch) (NO COMPATIBLE)
(?'name're)
con nombre & grupo de captura numerado (submatch) (NO COMPATIBLE)
(?:re)
grupo que no escapturing
(?flags)
establecer marcas dentro del grupo actual; noncapturing
(?flags:re)
establecer marcas durante la re; noncapturing
(?#text)
comentario (NO COMPATIBLE)
(?\|x\|y\|z)
Restablecimiento de numeración de rama (NO COMPATIBLE)
(?>re)
coincidencia posesiva de re (NO COMPATIBLE)
re@>
coincidencia posesiva de re VIM (NO COMPATIBLE)
%(re)
VIM de grupo nocapturing (NO COMPATIBLE)
Marcas
Ejemplo
Descripción
i
sin distinción entre mayúsculas y minúsculas (valor predeterminado false)
m
modo de varias líneas: ^ y $ coinciden con la línea inicial o final, además del texto de inicio y finalización (valor predeterminado false)
s
let . match \n (valor predeterminado false)
U
ungreedy: intercambio de significado de x* y x*?, x+ y x+?, etc (valor predeterminado false)
La sintaxis de marca es xyz (set) o -xyz (clear) o xy-z (set xy, clear z).
Para usar marcas, debe especificar los kind parámetros y flags , como se indica a continuación: kind=regex regexFlagsflags=.
Cadenas vacías
Ejemplo
Descripción
^
al principio del texto o línea (m=true)
$
al final del texto (como \z no\Z) o línea (m=true)
\A
al principio del texto
\b
en el límite de palabras ASCII (\w en un lado y \W, \Ao \z en el otro)
\B
no en el límite de palabra ASCII
\g
al principio del subtexto en el que se busca PCRE (NO COMPATIBLE)
\G
al final de la última coincidencia (NO COMPATIBLE) PERL
\Z
al final del texto, o antes de la nueva línea al final del texto (NO COMPATIBLE)
\z
al final del texto
(?=re)
antes de la coincidencia re de texto (NO COMPATIBLE)
(?!re)
antes de que el texto no coincida re (NO COMPATIBLE)
(?<=re)
después de la coincidencia re de texto (NO COMPATIBLE)
(?<!re)
después de que el texto no coincida re (NO COMPATIBLE)
re&
antes de la coincidencia re de texto (NO COMPATIBLE) VIM
re@=
antes de la coincidencia re de texto (NO COMPATIBLE) VIM
re@!
antes de que el texto no coincida re (NO COMPATIBLE) VIM
re@<=
después de la coincidencia re de texto (NO COMPATIBLE) VIM
re@<!
después de que el texto no coincida re (NO COMPATIBLE) VIM
\zs
establece el inicio de la coincidencia (= \K) (NO COMPATIBLE) VIM
\ze
establece el fin de la coincidencia (NO COMPATIBLE) VIM
\%^
principio del archivo (NO COMPATIBLE) VIM
\%$
fin del archivo (NO COMPATIBLE) VIM
\%V
en pantalla (NO COMPATIBLE) VIM
\%#
posición del cursor (NO COMPATIBLE) VIM
\%'m
posición de marca m (NO COMPATIBLE) VIM
\%23l
en la línea 23 (NO COMPATIBLE) VIM
\%23c
en la columna 23 (NO COMPATIBLE) VIM
\%23v
en la columna virtual 23 (NO COMPATIBLE) VIM
Secuencias de escape
Ejemplo
Descripción
\a
bell (≡ \007)
\f
fuente de formularios (≡ \014)
\t
pestaña horizontal (≡ \011)
\n
newline (≡ \012)
\r
retorno de carro (≡ \015)
\v
carácter de tabulación vertical (≡ \013)
\*
literal *, para cualquier carácter de puntuación *
\123
código de carácter octal (hasta tres dígitos)
\x7F
Código de carácter hexadecimal (exactamente dos dígitos)
\x{10FFFF}
Código de carácter hexadecimal
\C
coincidir con un solo byte incluso en modo UTF-8
\Q...\E
texto ... literal incluso si ... tiene signos de puntuación
\1
referencia inversa (NO COMPATIBLE)
\b
backspace (NOT SUPPORTED) (use \010)
\cK
control char ^K (NOT SUPPORTED) (use \001 etc)
\e
escape (NO COMPATIBLE) (use \033)
\g1
referencia inversa (NO COMPATIBLE)
\g{1}
referencia inversa (NO COMPATIBLE)
\g{+1}
referencia inversa (NO COMPATIBLE)
\g{-1}
referencia inversa (NO COMPATIBLE)
\g{name}
referencia inversa con nombre (NO COMPATIBLE)
\g<name>
llamada a subrutina (NO COMPATIBLE)
\g'name'
llamada a subrutina (NO COMPATIBLE)
\k<name>
referencia inversa con nombre (NO COMPATIBLE)
\k'name'
referencia inversa con nombre (NO COMPATIBLE)
\lX
X minúscula (NO COMPATIBLE)
\ux
x mayúsculas (NO COMPATIBLE)
\L...\E
texto ... en minúsculas (NO COMPATIBLE)
\K
restablecimiento del $0 comienzo (NO COMPATIBLE)
\N{name}
carácter Unicode con nombre (NO COMPATIBLE)
\R
salto de línea (NO COMPATIBLE)
\U...\E
texto ... en mayúsculas (NO COMPATIBLE)
\X
secuencia Unicode extendida (NO COMPATIBLE)
\%d123
carácter decimal 123 (NO COMPATIBLE) VIM
\%xFF
FF de carácter hexadecimal (NO COMPATIBLE) VIM
\%o123
carácter octal 123 (NO COMPATIBLE) VIM
\%u1234
0X1234 de caracteres Unicode (NO COMPATIBLE) VIM
\%U12345678
VIM de caracteres Unicode 0x12345678 (NO COMPATIBLE)
Elementos de clase de caracteres
Ejemplo
Descripción
x
carácter individual
A-Z
intervalo de caracteres (inclusivo)
\d
clase de caracteres de Perl
[:foo:]
Clase de caracteres ASCII foo
\p{Foo}
Clase de caracteres Unicode Foo
\pF
Clase de caracteres F Unicode (nombre de una letra)
Clases de caracteres con nombre como elementos de clase de caracteres
Ejemplo
Descripción
[\d]
dígitos (≡ \d)
[^\d]
no dígitos (≡ \D)
[\D]
no dígitos (≡ \D)
[^\D]
no dígitos (≡ \d)
[[:name:]]
clase ASCII con nombre dentro de la clase de caracteres (≡ [:name:])
[^[:name:]]
clase ASCII con nombre dentro de la clase de caracteres negada (≡ [:^name:])
[\p{Name}]
propiedad Unicode con nombre dentro de la clase de caracteres (≡ \p{Name})
[^\p{Name}]
propiedad Unicode con nombre dentro de la clase de caracteres negada (≡ \P{Name})
Clases de caracteres perl
Solo ASCII
Ejemplo
Descripción
\d
dígitos (≡ [0-9])
\D
no dígitos (≡ [^0-9])
\s
espacio en blanco (≡ [\t\n\f\r ])
\S
no espacio en blanco (≡ [^\t\n\f\r ])
\w
caracteres de palabra (≡ [0-9A-Za-z_])
\W
no caracteres de palabra (≡ [^0-9A-Za-z_])
\h
espacio horizontal (NO COMPATIBLE)
\H
no se admite el espacio horizontal (NO COMPATIBLE)
Próximamente: A lo largo de 2024 iremos eliminando gradualmente GitHub Issues como mecanismo de comentarios sobre el contenido y lo sustituiremos por un nuevo sistema de comentarios. Para más información, vea: https://aka.ms/ContentUserFeedback.