Sintaxe RE2

Este artigo fornece uma descrição geral da sintaxe de expressão regular suportada pelo Linguagem de Pesquisa Kusto (KQL), que é a sintaxe da biblioteca RE2.

Existem vários operadores e funções KQL que efetuam a correspondência, seleção e extração de cadeias com expressões regulares, tais como matches regex, parsee replace_regex().

No KQL, as expressões regulares têm de ser codificadas como literais de cadeia e seguir as regras de citação de cadeias. Por exemplo, a expressão \A regular RE2 é representada no KQL como "\\A". A barra invertida extra indica que a outra barra invertida faz parte da expressão \Anormal .

Descrição geral da sintaxe

A tabela seguinte descreve a sintaxe de expressão normal RE2, que é utilizada para escrever expressões regulares no Kusto.

Elemento sintaxe Description
Literais únicos Os carateres individuais correspondem a si próprios, exceto os metacaractadores (* + ? ( ) |), que têm significados exclusivos, conforme descrito nas seguintes linhas.
Metagramas Para corresponder literalmente a um metacaracter, escape-o com barras invertidas. Por exemplo, a expressão \+ normal corresponde a um caráter literal de adição (+).
Alternação Alternar duas expressões com | para criar uma nova expressão que corresponda a qualquer uma das expressões. Por exemplo, e1 | e2 corresponde a ou e2e1 .
Concatenação Concatenar duas expressões para criar uma nova expressão que corresponda à primeira expressão seguida da segunda. Por exemplo, e1e2 as correspondências e1 são seguidas por e2.
Repetição Os metacaracters ?, +e * são operadores de repetição. Por exemplo, e1? corresponde a zero ou uma ocorrência de e1, e1+ corresponde a uma ou mais ocorrências de e1, e e1* corresponde a uma sequência de zero ou mais, possivelmente diferente, cadeias que correspondem e1a .

Nota

Os operadores de expressão regulares avaliam por esta ordem: alternação (|), concatenação (expressões lado a lado) e repetição (?, +, *). Utilize parênteses para controlar a ordem de avaliação.

Expressões de carateres únicos

Exemplo Descrição
. qualquer caráter, possivelmente incluindo newline (s=true)
[xyz] classe de carateres
[^xyz] classe de caráter negado
\d Classe de carateres perl
\D classe de caráter Perl negada
[[:alpha:]] Classe de carateres ASCII
[[:^alpha:]] classe de carateres ASCII negada
\pN Classe de carateres unicode (nome de uma letra)
\p{Greek} Classe de carateres Unicode
\PN classe de carateres Unicode negada (nome de uma letra)
\P{Greek} classe de carateres Unicode negada

Agregados

Exemplo Descrição
xy x seguido de y
x\|y x ou y (preferir x)

Repetições

Exemplo Descrição
x* zero ou mais x, prefere mais
x+ um ou mais x, prefere mais
x? zero ou um x, prefere um
x{n,m} n ou n+1 ou ... ou mx, prefere mais
x{n,} n ou mais x, prefere mais
x{n} exatamente nx
x*? zero ou mais x, prefere menos
x+? um ou mais x, prefere menos
x?? zero ou um x, prefere zero
x{n,m}? n ou n+1 ou ... ou mx, prefere menos
x{n,}? n ou mais x, prefere menos
x{n}? exatamente nx
x{} (≡ x*) (NÃO SUPORTADO) VIM
x{-} (≡ x*?) (NÃO SUPORTADO) VIM
x{-n} (≡ x{n}?) (NÃO SUPORTADO) VIM
x= (≡ x?) (NÃO SUPORTADO) VIM

Restrição de implementação: os formulários de contagem x{n,m}, x{n,}e x{n} rejeitam formulários que criam um número mínimo ou máximo de repetições acima de 1000. As repetições ilimitadas não estão sujeitas a esta restrição.

Repetições possessivas

Exemplo Descrição
x*+ zero ou mais x, possessivo (NÃO SUPORTADO)
x++ um ou mais x, possessivos (NÃO SUPORTADOS)
x?+ zero ou um x, possessivo (NÃO SUPORTADO)
x{n,m}+ n ou ... ou mx, possessivo (NÃO SUPORTADO)
x{n,}+ n ou mais x, possessivo (NÃO SUPORTADO)
x{n}+ exatamente nx, possessivo (NÃO SUPORTADO)

Agrupamento

Exemplo Descrição
(re) grupo de captura numerado (submatch)
(?P<name>re) com o nome & grupo de captura numerado (submatch)
(?<name>re) com o nome & grupo de captura numerado (submatch) (NÃO SUPORTADO)
(?'name're) com o nome & grupo de captura numerado (submatch) (NÃO SUPORTADO)
(?:re) grupo que não está a sercapturado
(?flags) definir sinalizadores dentro do grupo atual; nãocapturing
(?flags:re) definir sinalizadores durante o re; nãocapturing
(?#text) comentário (NÃO SUPORTADO)
(?\|x\|y\|z) reposição de numeração de ramo (NÃO SUPORTADO)
(?>re) correspondência possessiva de re (NÃO SUPORTADO)
re@> correspondência possessiva de re VIM (NÃO SUPORTADO)
%(re) grupo nãocapturado (NÃO SUPORTADO) VIM

Sinalizadores

Exemplo Descrição
i não sensível a maiúsculas e minúsculas (falso predefinido)
m modo de várias linhas: ^ e $ corresponda à linha de início/fim para além do texto de início/fim (falso predefinido)
s permitir . a correspondência \n (falso predefinido)
U não gananciosa: trocar o significado de x* e x*?, x+ e x+?, etc (falso predefinido)

A sintaxe do sinalizador é xyz (set) ou -xyz (claro) ou xy-z (set xy, clear z).

Para utilizar sinalizadores, tem de especificar os kind parâmetros e flags , da seguinte forma: kind=regexflags=regexFlags.

Cadeias vazias

Exemplo Descrição
^ no início do texto ou da linha (m=verdadeiro)
$ no fim do texto (como \z não\Z) ou na linha (m=verdadeiro)
\A no início do texto
\b no limite da palavra ASCII (\w de um lado e \W, \Aou \z do outro)
\B não no limite da palavra ASCII
\g no início do subtexto a ser pesquisado (NÃO SUPORTADO) PCRE
\G no final da última partida (NÃO SUPORTADO) PERL
\Z no fim do texto ou antes da nova linha no final do texto (NÃO SUPORTADO)
\z no fim do texto
(?=re) antes da correspondência re de texto (NÃO SUPORTADO)
(?!re) antes de o texto não corresponder re (NÃO SUPORTADO)
(?<=re) após a correspondência re de texto (NÃO SUPORTADO)
(?<!re) depois de o texto não corresponder re (NÃO SUPORTADO)
re& antes da correspondência re de texto (NÃO SUPORTADO) VIM
re@= antes da correspondência re de texto (NÃO SUPORTADO) VIM
re@! antes de texto não corresponder re (NÃO SUPORTADO) VIM
re@<= após a correspondência re de texto (NÃO SUPORTADO) VIM
re@<! depois de texto não corresponder re (NÃO SUPORTADO) VIM
\zs conjuntos de início da correspondência (= \K) (NÃO SUPORTADO) VIM
\ze define o fim da correspondência (NÃO SUPORTADO) VIM
\%^ início do vim de ficheiro (NÃO SUPORTADO)
\%$ fim do ficheiro (NÃO SUPORTADO) VIM
\%V vim no ecrã (NÃO SUPORTADO)
\%# VIM da posição do cursor (NÃO SUPORTADO)
\%'m m marcar posição (NÃO SUPORTADO) VIM
\%23l na linha 23 (NÃO SUPORTADO) VIM
\%23c na coluna 23 (NÃO SUPORTADO) VIM
\%23v na coluna virtual 23 (NÃO SUPORTADO) VIM

Sequências de escape

Exemplo Descrição
\a sino (≡ \007)
\f feed de formulários (≡ \014)
\t separador horizontal (≡ \011)
\n newline (≡ \012)
\r retorno de carruagem (≡ \015)
\v caráter de separador vertical (≡ \013)
\* literal *, para qualquer caráter de pontuação *
\123 octal character code (até três dígitos)
\x7F código de carateres hexadecimais (exatamente dois dígitos)
\x{10FFFF} código de carateres hexadecimais
\C corresponder a um único byte mesmo no modo UTF-8
\Q...\E texto ... literal, mesmo que ... tenha pontuação
\1 backreference (NÃO SUPORTADO)
\b backspace (NÃO SUPORTADO) (utilizar \010)
\cK caráter de controlo ^K (NÃO SUPORTADO) (utilize \001 , etc.)
\e escape (NÃO SUPORTADO) (utilizar \033)
\g1 backreference (NÃO SUPORTADO)
\g{1} backreference (NÃO SUPORTADO)
\g{+1} backreference (NÃO SUPORTADO)
\g{-1} backreference (NÃO SUPORTADO)
\g{name} com o nome backreference (NÃO SUPORTADO)
\g<name> chamada subroutina (NÃO SUPORTADA)
\g'name' chamada subroutina (NÃO SUPORTADA)
\k<name> com o nome backreference (NÃO SUPORTADO)
\k'name' com o nome backreference (NÃO SUPORTADO)
\lX minúsculas X (NÃO SUPORTADO)
\ux maiúsculas x (NÃO SUPORTADO)
\L...\E texto ... em minúsculas (NÃO SUPORTADO)
\K repor início de $0 (NÃO SUPORTADO)
\N{name} denominado Caráter Unicode (NÃO SUPORTADO)
\R quebra de linha (NÃO SUPORTADO)
\U...\E texto ... em maiúsculas (NÃO SUPORTADO)
\X sequência Unicode expandida (NÃO SUPORTADA)
\%d123 caráter decimal 123 (NÃO SUPORTADO) VIM
\%xFF HEX character FF (NÃO SUPORTADO) VIM
\%o123 octal caráter 123 (NÃO SUPORTADO) VIM
\%u1234 VIM de 0x1234 de carateres unicode (NÃO SUPORTADO)
\%U12345678 VIM de 0x12345678 de carateres unicode (NÃO SUPORTADO)

Elementos da classe de carateres

Exemplo Descrição
x caráter único
A-Z intervalo de carateres (inclusive)
\d Classe de carateres perl
[:foo:] Classe de carateres ASCII foo
\p{Foo} Classe de carateres Unicode Foo
\pF Classe F de carateres unicode (nome de uma letra)

Classes de carateres nomeadas como elementos de classe de carateres

Exemplo Descrição
[\d] dígitos (≡ \d)
[^\d] não dígitos (≡ \D)
[\D] não dígitos (≡ \D)
[^\D] não são dígitos (≡ \d)
[[:name:]] classe ASCII denominada dentro da classe de carateres (≡ [:name:])
[^[:name:]] denominada classe ASCII dentro da classe de carateres negados (≡ [:^name:])
[\p{Name}] propriedade Unicode denominada dentro da classe de carateres (≡ \p{Name})
[^\p{Name}] propriedade Unicode denominada dentro da classe de carateres negados (≡ \P{Name})

Classes de carateres perl

Apenas ASCII

Exemplo Descrição
\d dígitos (≡ [0-9])
\D não dígitos (≡ [^0-9])
\s espaço em branco (≡ [\t\n\f\r ])
\S não espaço em branco (≡ [^\t\n\f\r ])
\w carateres de palavras (≡ [0-9A-Za-z_])
\W não carateres de palavras (≡ [^0-9A-Za-z_])
\h espaço horizontal (NÃO SUPORTADO)
\H não é espaço horizontal (NÃO SUPORTADO)
\v espaço vertical (NÃO SUPORTADO)
\V não é espaço vertical (NÃO SUPORTADO)

Classes de carateres ASCII

Exemplo Descrição
[[:alnum:]] alfanumérico (≡ [0-9A-Za-z])
[[:alpha:]] alfabético (≡ [A-Za-z])
[[:ascii:]] ASCII (≡ [\x00-\x7F])
[[:blank:]] em branco (≡ [\t ])
[[:cntrl:]] controlo (≡ [\x00-\x1F\x7F])
[[:digit:]] dígitos (≡ [0-9])
[[:graph:]] gráfico (≡ [!-~][A-Za-z0-9!"#$%&'()*+,\-./:;<=>?@[\\\]^_{ |}~])
[[:lower:]] minúsculas (≡ [a-z])
[[:print:]] imprimível (≡ [ -~][ [:graph:]])
[[:punct:]] pontuação (≡ [!-/:-@[-{-~])
[[:space:]] espaço em branco (≡ [\t\n\v\f\r ])
[[:upper:]] maiúsculas (≡ [A-Z])
[[:word:]] carateres de palavras (≡ [0-9A-Za-z_])
[[:xdigit:]] dígito hexadecima (≡ [0-9A-Fa-f])

Nomes de classes de carateres Unicode

Geral

Exemplo Descrição
C other
Cc control
Cf formato
Cn pontos de código não atribuídos (NÃO SUPORTADO)
Co utilização privada
Cs substituto
L letra
LC letra maiúscula (NÃO SUPORTADA)
L& letra maiúscula (NÃO SUPORTADA)
Ll letra minúscula
Lm letra modificadora
Lo outra letra
Lt letra titlecase
Lu letras maiúsculas
M marcar
Mc marca de espaçamento
Me marca de colocação
Mn marca sem espaçamento
N número
Nd número decimal
Nl número de letra
No outro número
P pontuação
Pc pontuação do conector
Pd pontuação do traço
Pe fechar pontuação
Pf pontuação final
Pi pontuação inicial
Po outra pontuação
Ps pontuação aberta
S símbolo
Sc símbolo de moeda
Sk símbolo modificador
Sm símbolo matemático
So outro símbolo
Z separador
Zl separador de linha
Zp separador de parágrafo
Zs separador de espaço

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

Classes de carateres Vim

Exemplo Descrição
\i identificador de caráter (NÃO SUPORTADO) VIM
\I \i exceto os dígitos (NÃO SUPORTADO) VIM
\k vim de caráter de palavra-chave (NÃO SUPORTADO)
\K \k exceto os dígitos (NÃO SUPORTADO) VIM
\f caráter de nome de ficheiro (NÃO SUPORTADO) VIM
\F \f exceto os dígitos (NÃO SUPORTADO) VIM
\p vim de caráter imprimível (NÃO SUPORTADO)
\P \p exceto os dígitos (NÃO SUPORTADO) VIM
\s caráter de espaço em branco (≡ [ \t]) (NÃO SUPORTADO) VIM
\S vim de caráter de espaço não branco (≡ [^ \t]) (NÃO SUPORTADO)
\d dígitos (≡ [0-9]) VIM
\D não \d VIM
\x dígitos hexadecimais (≡ [0-9A-Fa-f]) (NÃO SUPORTADO) VIM
\X não \x (NÃO SUPORTADO) VIM
\o octal digits (≡ [0-7]) (NÃO SUPORTADO) VIM
\O não \o (NÃO SUPORTADO) VIM
\w vim do caráter de palavra
\W não \w VIM
\h vim do caráter de cabeça de palavra (NÃO SUPORTADO)
\H não \h (NÃO SUPORTADO) VIM
\a VIM alfabético (NÃO SUPORTADO)
\A não \a (NÃO SUPORTADO) VIM
\l VIM em minúsculas (NÃO SUPORTADO)
\L VIM não minúsculo (NÃO SUPORTADO)
\u VIM em maiúscula (NÃO SUPORTADO)
\U VIM não em maiúsculas (NÃO SUPORTADO)
\_x \x mais newline, para qualquer x VIM (NÃO SUPORTADO)
\c ignorar maiúsculas/minúsculas (NÃO SUPORTADO) VIM
\C maiúsculas/minúsculas (NÃO SUPORTADO) VIM
\m magic (NÃO SUPORTADO) VIM
\M VIM nomagic (NÃO SUPORTADO)
\v VIM muitomagico (NÃO SUPORTADO)
\V VIM muitonomagico (NÃO SUPORTADO)
\Z ignorar diferenças na combinação de carateres Unicode (NÃO SUPORTADO) VIM

Magia

Exemplo Descrição
(?{code}) PERL arbitrário de código perl (NÃO SUPORTADO)
(??{code}) perl arbitrário adiado (NÃO SUPORTADO) PERL
(?n) chamada recursiva para o grupo n de captura regexp (NÃO SUPORTADO)
(?+n) chamada recursiva para grupo +n relativo (NÃO SUPORTADO)
(?-n) chamada recursiva para grupo -n relativo (NÃO SUPORTADO)
(?C) PCRE de nota de aviso PCRE (NÃO SUPORTADO)
(?R) chamada recursiva para todo o regexp (≡ (?0)) (NÃO SUPORTADO)
(?&name) chamada recursiva para grupo com nome (NÃO SUPORTADO)
(?P=name) backreference com nome (NÃO SUPORTADO)
(?P>name) chamada recursiva para grupo com nome (NÃO SUPORTADO)
(?(cond)true\|false) ramo condicional (NÃO SUPORTADO)
(?(cond)true) ramo condicional (NÃO SUPORTADO)
(*ACCEPT) tornar o regexps mais parecido com o Prolog (NÃO SUPORTADO)
(*COMMIT) (NÃO SUPORTADO)
(*F) (NÃO SUPORTADO)
(*FAIL) (NÃO SUPORTADO)
(*MARK) (NÃO SUPORTADO)
(*PRUNE) (NÃO SUPORTADO)
(*SKIP) (NÃO SUPORTADO)
(*THEN) (NÃO SUPORTADO)
(*ANY) definir convenção de nova linha (NÃO SUPORTADO)
(*ANYCRLF) (NÃO SUPORTADO)
(*CR) (NÃO SUPORTADO)
(*CRLF) (NÃO SUPORTADO)
(*LF) (NÃO SUPORTADO)
(*BSR_ANYCRLF) definir \R convention (NOT SUPPORTED) PCRE
(*BSR_UNICODE) (NÃO SUPORTADO) PCRE