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)
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})
Brevemente: Ao longo de 2024, vamos descontinuar progressivamente o GitHub Issues como mecanismo de feedback para conteúdos e substituí-lo por um novo sistema de feedback. Para obter mais informações, veja: https://aka.ms/ContentUserFeedback.