Compartir a través de


Sintaxis de RE2

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)
[xyz] clase de caracteres
[^xyz] clase de caracteres negada
\d Clase de caracteres 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 (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 , m xprefiere más
x{n,} n o más x, prefiere más
x{n} exactamente n x
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 m x, prefieren menos
x{n,}? n o más x, prefiere menos
x{n}? exactamente n x
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 m x, posesivo (NO COMPATIBLE)
x{n,}+ n o más x, posesivo (NO COMPATIBLE)
x{n}+ exactamente n x, 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)
\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úsculas (≡ [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 otro
Cc control
Cf format
Cn puntos de código sin asignar (NO COMPATIBLE)
Co uso privado
Cs sustituto
L letter
LC letra con mayúsculas y minúsculas (NO COMPATIBLE)
L& letra con mayúsculas y minúsculas (NO COMPATIBLE)
Ll minúscula
Lm letra modificadora
Lo otra letra
Lt letra de título
Lu letra mayúscula
M mark
Mc Marca de espaciado
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 signo de puntuación de cierre
Pf puntuación final
Pi puntuación inicial
Po otros signos de puntuación
Ps puntuación abierta
S symbol
Sc símbolo de moneda
Sk símbolo modificador
Sm símbolo matemático
So otro símbolo
Z separator
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 VIM de carácter imprimible (NO COMPATIBLE)
\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 VIM en mayúsculas (NO COMPATIBLE)
\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 de código perl (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 la expresión regular completa (≡ (?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) make regexps more like Prolog (NOT SUPPORTED)
(*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