En este artículo se proporciona información general sobre la sintaxis de expresiones regulares admitidas 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 únicos coinciden a sí mismos, excepto los metacaractores (* + ? ( ) |), que tienen significados únicos como se describe en las siguientes filas.
Metacharacters
Para buscar coincidencias con un metacaracter literalmente, escape con barras diagonales inversas. Por ejemplo, la expresión \+ regular coincide con un carácter literal más (+).
Alternancia
Alterne dos expresiones con | para crear una expresión que coincida con cualquiera de las expresiones. Por ejemplo, e1 | e2 coincide con e1 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 apariciones de e1y e1* coincide con una secuencia de cero o más cadenas, posiblemente diferentes, que coinciden con e1.
Nota:
Los operadores de expresiones regulares 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 caracteres únicos
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 (prefiere x)
Repeticiones
Ejemplo
Descripción
x*
cero o más x, prefiere más
x+
uno o más x, prefiere más
x?
cero o uno x, prefiere uno
x{n,m}
n o n+1 o ... o , mxprefiere 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, prefieren 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 superior a 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 más x, posesivo (NO COMPATIBLE)
x?+
cero o un 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)
Agrupación
Ejemplo
Descripción
(re)
grupo de captura numerado (submatch)
(?P<name>re)
grupo de captura con nombre y numeración (submatch)
(?<name>re)
grupo de captura con nombre y numeración (submatch) (NO COMPATIBLE)
(?'name're)
grupo de captura con nombre y numeración (submatch) (NO COMPATIBLE)
(?:re)
grupo que no es decapturación
(?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)
nocapturing group (NOT SUPPORTED) VIM
Flags
Ejemplo
Descripción
i
no distingue mayúsculas de minúsculas (valor predeterminado false)
m
modo de varias líneas: ^ y $ coinciden con la línea de inicio y finalización, además del texto de inicio y finalización (valor predeterminado false)
s
let . match \n (valor predeterminado false)
U
nogreedy: 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 flags= regexFlags.
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 la otra)
\B
no en el límite de palabras ASCII
\g
al principio del subtexto que se busca (NO COMPATIBLE) PCRE
\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 de re texto (NO COMPATIBLE)
(?!re)
antes de que el texto no coincida re (NO COMPATIBLE)
(?<=re)
después de la coincidencia de re texto (NO COMPATIBLE)
(?<!re)
después de que el texto no coincida re (NO COMPATIBLE)
re&
antes de la coincidencia de re texto (NO COMPATIBLE) VIM
re@=
antes de la coincidencia de re texto (NO COMPATIBLE) VIM
re@!
antes de que el texto no coincida re (NO COMPATIBLE) VIM
re@<=
después de la coincidencia de re texto (NO COMPATIBLE) VIM
re@<!
después de que el texto no coincida re (NO COMPATIBLE) VIM
\zs
establece el inicio de coincidencia (= \K) (NO COMPATIBLE) VIM
\ze
establece el final de coincidencia (NO COMPATIBLE) VIM
\%^
comienzo 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 marcado 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 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
minúsculas X (NO COMPATIBLES)
\ux
mayúsculas x (NO COMPATIBLES)
\L...\E
texto ... en minúsculas (NO COMPATIBLE)
\K
reset beginning of $0 (NOT SUPPORTED)
\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 único
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.