Share via


Sintaxis de RE2

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)
[xyz] clase de caracteres
[^xyz] clase de caracteres negada
\d clase de caracteres de Perl
\D clase de caracteres de Perl negada
[[:alpha:]] clase de caracteres ASCII
[[:^alpha:]] clase de caracteres ASCII negada
\pN 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)
\v espacio vertical (NO COMPATIBLE)
\V no se admite el espacio vertical (NO COMPATIBLE)

Clases de caracteres ASCII

Ejemplo Descripción
[[:alnum:]] alfanumérico (≡ [0-9A-Za-z])
[[:alpha:]] alfabético (≡ [A-Za-z])
[[:ascii:]] ASCII (≡ [\x00-\x7F])
[[:blank:]] blank (≡ [\t ])
[[:cntrl:]] control (≡ [\x00-\x1F\x7F])
[[:digit:]] dígitos (≡ [0-9])
[[:graph:]] gráfico (≡ ≡ [!-~][A-Za-z0-9!"#$%&'()*+,\-./:;<=>?@[\\\]^_{ |}~])
[[:lower:]] minúscula (≡ [a-z])
[[:print:]] imprimible (≡ [ -~][ [:graph:]])
[[:punct:]] puntuación (≡ [!-/:-@[-{-~])
[[:space:]] espacio en blanco (≡ [\t\n\v\f\r ])
[[:upper:]] mayúsculas (≡ [A-Z])
[[:word:]] caracteres de palabra (≡ [0-9A-Za-z_])
[[:xdigit:]] dígito hexadecimal (≡ [0-9A-Fa-f])

Nombres de clase de caracteres Unicode

General

Ejemplo Descripción
C Otros
Cc control
Cf format
Cn puntos de código sin asignar (NO COMPATIBLE)
Co uso privado
Cs Sustituto
L Carta
LC letra con mayúsculas y minúsculas (NO COMPATIBLE)
L& letra con mayúsculas y minúsculas (NO COMPATIBLE)
Ll letra minúscula
Lm letra modificadora
Lo otra letra
Lt letra de título
Lu letra mayúscula
M mark
Mc Espaciado de marca
Me marca de inclusión
Mn marca sin espaciado
N number
Nd número decimal
Nl número de letra
No otro número
P puntuación
Pc puntuación del conector
Pd puntuación de guión
Pe signos de puntuación de cierre
Pf puntuación final
Pi puntuación inicial
Po otros signos de puntuación
Ps signos de puntuación abiertos
S símbolo
Sc símbolo de moneda
Sk símbolo modificador
Sm símbolo matemático
So otro símbolo
Z separador
Zl separador de línea
Zp separador de párrafo
Zs separador de espacio

Scripts

Scripts
Adlam
Ahom
Anatolian_Hieroglyphs
Arabic
Armenian
Avestan
Balinese
Bamum
Bassa_Vah
Batak
Bengali
Bhaiksuki
Bopomofo
Brahmi
Braille
Buginese
Buhid
Canadian_Aboriginal
Carian
Caucasian_Albanian
Chakma
Cham
Cherokee
Chorasmian
Common
Coptic
Cuneiform
Cypriot
Cyrillic
Deseret
Devanagari
Dives_Akuru
Dogra
Duployan
Egyptian_Hieroglyphs
Elbasan
Elymaic
Ethiopic
Georgian
Glagolitic
Gothic
Grantha
Greek
Gujarati
Gunjala_Gondi
Gurmukhi
Han
Hangul
Hanifi_Rohingya
Hanunoo
Hatran
Hebrew
Hiragana
Imperial_Aramaic
Inherited
Inscriptional_Pahlavi
Inscriptional_Parthian
Javanese
Kaithi
Kannada
Katakana
Kayah_Li
Kharoshthi
Khitan_Small_Script
Khmer
Khojki
Khudawadi
Lao
Latin
Lepcha
Limbu
Linear_A
Linear_B
Lisu
Lycian
Lydian
Mahajani
Makasar
Malayalam
Mandaic
Manichaean
Marchen
Masaram_Gondi
Medefaidrin
Meetei_Mayek
Mende_Kikakui
Meroitic_Cursive
Meroitic_Hieroglyphs
Miao
Modi
Mongolian
Mro
Multani
Myanmar
Nabataean
Nandinagari
New_Tai_Lue
Newa
Nko
Nushu
Nyiakeng_Puachue_Hmong
Ogham
Ol_Chiki
Old_Hungarian
Old_Italic
Old_North_Arabian
Old_Permic
Old_Persian
Old_Sogdian
Old_South_Arabian
Old_Turkic
Odia
Osage
Osmanya
Pahawh_Hmong
Palmyrene
Pau_Cin_Hau
Phags_Pa
Phoenician
Psalter_Pahlavi
Rejang
Runic
Samaritan
Saurashtra
Sharada
Shavian
Siddham
SignWriting
Sinhala
Sogdian
Sora_Sompeng
Soyombo
Sundanese
Syloti_Nagri
Syriac
Tagalog
Tagbanwa
Tai_Le
Tai_Tham
Tai_Viet
Takri
Tamil
Tangut
Telugu
Thaana
Thai
Tibetan
Tifinagh
Tirhuta
Ugaritic
Vai
Wancho
Warang_Citi
Yezidi
Yi
Zanabazar_Square

Clases de caracteres vim

Ejemplo Descripción
\i carácter de identificador (NO COMPATIBLE) VIM
\I \i excepto dígitos (NO COMPATIBLE) VIM
\k carácter de palabra clave (NOT SUPPORTED) VIM
\K \k excepto dígitos (NO COMPATIBLE) VIM
\f carácter de nombre de archivo (NO COMPATIBLE) VIM
\F \f excepto dígitos (NO COMPATIBLE) VIM
\p carácter imprimible (NO COMPATIBLE) VIM
\P \p excepto dígitos (NO COMPATIBLE) VIM
\s carácter de espacio en blanco (≡ [ \t]) (NO COMPATIBLE) VIM
\S carácter de espacio nowhite (≡ [^ \t]) (NO COMPATIBLE) VIM
\d dígitos (≡ [0-9]) VIM
\D no \d VIM
\x dígitos hexadecimales (≡ [0-9A-Fa-f]) (NO COMPATIBLE) VIM
\X no \x (NO COMPATIBLE) VIM
\o octal digits (≡ [0-7]) (NOT SUPPORTED) VIM
\O no \o (NO COMPATIBLE) VIM
\w carácter de palabra VIM
\W no \w VIM
\h head of word character (NOT SUPPORTED) VIM
\H no \h (NO COMPATIBLE) VIM
\a VIM alfabético (NO COMPATIBLE)
\A no \a (NO COMPATIBLE) VIM
\l VIM en minúsculas (NO COMPATIBLE)
\L no en minúsculas (NO COMPATIBLE) VIM
\u mayúsculas (NO COMPATIBLE) VIM
\U no en mayúsculas (NO COMPATIBLE) VIM
\_x \x más nueva línea, para cualquier x VIM (NO COMPATIBLE)
\c ignore case (NOT SUPPORTED) VIM
\C match case (NOT SUPPORTED) VIM
\m magic (NO COMPATIBLE) VIM
\M nomagic (NO COMPATIBLE) VIM
\v muymagic (NO COMPATIBLE) VIM
\V VERYNOMAGIC (NO COMPATIBLE) VIM
\Z omitir las diferencias en la combinación de caracteres Unicode (NO COMPATIBLE) VIM

Instrucción mágica

Ejemplo Descripción
(?{code}) código perl arbitrario (NO COMPATIBLE) PERL
(??{code}) PERL arbitrario pospuesto (NO COMPATIBLE) PERL
(?n) llamada recursiva al grupo n de captura regexp (NO COMPATIBLE)
(?+n) llamada recursiva al grupo +n relativo (NO COMPATIBLE)
(?-n) llamada recursiva al grupo -n relativo (NO COMPATIBLE)
(?C) PCRE callout (NOT SUPPORTED) PCRE
(?R) llamada recursiva a regexp completo (≡ (?0)) (NO COMPATIBLE)
(?&name) llamada recursiva al grupo con nombre (NO COMPATIBLE)
(?P=name) referencia inversa con nombre (NO COMPATIBLE)
(?P>name) llamada recursiva al grupo con nombre (NO COMPATIBLE)
(?(cond)true\|false) rama condicional (NO COMPATIBLE)
(?(cond)true) rama condicional (NO COMPATIBLE)
(*ACCEPT) hacer regexps más como Prolog (NO COMPATIBLE)
(*COMMIT) (NO COMPATIBLE)
(*F) (NO COMPATIBLE)
(*FAIL) (NO COMPATIBLE)
(*MARK) (NO COMPATIBLE)
(*PRUNE) (NO COMPATIBLE)
(*SKIP) (NO COMPATIBLE)
(*THEN) (NO COMPATIBLE)
(*ANY) establecer la convención de nueva línea (NO COMPATIBLE)
(*ANYCRLF) (NO COMPATIBLE)
(*CR) (NO COMPATIBLE)
(*CRLF) (NO COMPATIBLE)
(*LF) (NO COMPATIBLE)
(*BSR_ANYCRLF) set \R convention (NOT SUPPORTED) PCRE
(*BSR_UNICODE) (NO COMPATIBLE) PCRE