Tento článek obsahuje přehled syntaxe regulárních výrazů podporovaných dotazovací jazyk Kusto (KQL), což je syntaxe knihovny RE2.
Existuje řada operátorů a funkcí KQL, které provádějí porovnávání řetězců, výběr a extrakci pomocí regulárních výrazů, jako matches regexje , parsea replace_regex().
V jazyce KQL musí být regulární výrazy kódovány jako řetězcové literály a dodržovat pravidla uvozování řetězců. Například regulární výraz \A RE2 je reprezentován v KQL jako "\\A". Zpětné lomítko navíc označuje, že druhé zpětné lomítko je součástí regulárního výrazu \A.
Přehled syntaxe
Následující tabulka obsahuje přehled syntaxe regulárních výrazů RE2, která se používá k zápisu regulárních výrazů v Kusto.
Element syntaxe
Popis
Jednoduché literály
Jednotlivé znaky se shodují s výjimkou metacharakterů (* + ? () |), které mají jedinečné významy, jak je popsáno v následujících řádcích.
Metacharaktory
Aby se metacharakter doslova shodil, uniknut s zpětnými lomítky. Regulární výraz \+ například odpovídá literálu plus (+) znaku.
Alternace
Alternativní dva výrazy s | cílem vytvořit nový výraz, který odpovídá některému z výrazů. Například e1 | e2 odpovídá buď e1 nebo e2.
Zřetězení
Zřetězením dvou výrazů vytvořte nový výraz, který odpovídá prvnímu výrazu následovaného druhým. Například e1e2 shody e1 následované e2.
Repetition (Opakování)
Metacharactery , +a * jsou operátory ?opakování. Například e1? odpovídá nule nebo jednomu výskytu e1, e1+ odpovídá jednomu nebo více výskytům e1a e1* odpovídá sekvenci nuly nebo více, případně různých, řetězců, které odpovídají e1.
Poznámka:
Operátory regulárních výrazů se vyhodnocují v tomto pořadí: alternace (|), zřetězení (souběžné výrazy) a opakování (?, +, *). K řízení pořadí vyhodnocení použijte závorky.
Výrazy s jedním znakem
Příklad
Popis
.
libovolný znak, případně včetně nového řádku (s=true)
Omezení implementace: Počet formulářů x{n,m}, x{n,} a x{n} zamítnou formuláře, které vytvářejí minimální nebo maximální počet opakování vyšší než 1000. Na toto omezení se nevztahují neomezené opakování.
Přivlastňovací opakování
Příklad
Popis
x*+
nula nebo více x, přivlastňovací (NEPODPOROVÁNO)
x++
jeden nebo více x, přivlastňovací (NEPODPOROVÁNO)
x?+
nula nebo jedna x, přivlastňovací (NEPODPOROVÁNO)
x{n,m}+
n nebo... nebo mx, přivlastňovací (NEPODPOROVÁNO)
x{n,}+
n nebo více x, přivlastňovací (NEPODPOROVÁNO)
x{n}+
přesně nx, přivlastňovací (NEPODPOROVÁNO)
Seskupení
Příklad
Popis
(re)
číslovaná zachytávaný skupina (podsložka)
(?P<name>re)
pojmenovaná a číslovaný zachytávaný skupina (podmatch)
(?<name>re)
pojmenovaná a číslovaný zachytávaný skupina (podsoučty) (NEPODPOROVÁNO)
(?'name're)
pojmenovaná a číslovaný zachytávaný skupina (podsoučty) (NEPODPOROVÁNO)
(?:re)
skupina bez zapouzdření
(?flags)
nastavit příznaky v rámci aktuální skupiny; bez zapouzdření
(?flags:re)
nastavit příznaky během re; bez zapouzdření
(?#text)
komentář (NEPODPORUJE SE)
(?\|x\|y\|z)
Resetování číslování větví (NEPODPORUJE SE)
(?>re)
přivlastňovací shoda re (NEPODPOROVÁNO)
re@>
přivlastňovací shoda re virtuálního počítače (NEPODPORUJE SE)
%(re)
virtuální počítač bez zapouzdření (NEPODPORUJE SE)
Příznaky
Příklad
Popis
i
Nerozlišují malá a velká písmena (výchozí false)
m
multi-line režim: ^ a $ shoda počáteční/koncový řádek kromě počátečního/koncového textu (výchozí false)
s
let . match \n (výchozí false)
U
ungreedy: swap význam of x* a x*?, x+ a x+?, atd (výchozí false)
Syntaxe příznaku je xyz (set) nebo -xyz (clear) nebo xy-z (set xy, clear z).
Chcete-li použít příznaky, je nutné zadat kind a flags parametry následujícím způsobem: kind=regex regexFlagsflags= .
Prázdné řetězce
Příklad
Popis
^
na začátku textu nebo řádku (m=true)
$
na konci textu (například \z ne\Z) nebo řádku (m=true)
\A
na začátku textu
\b
na hranici slova ASCII (\w na jedné straně a \W, \Anebo \z na druhé)
\B
not at ASCII word boundary
\g
na začátku prohledávaného podtextu (NEPODPORUJE SE) PCRE
\G
na konci poslední shody (NEPODPORUJE SE) PERL
\Z
na konci textu nebo před novým textem na konci textu (NEPODPORUJE SE)
\z
na konci textu
(?=re)
před porovnávání re textu (NEPODPORUJE SE)
(?!re)
před neshodou re textu (NEPODPOROVÁNO)
(?<=re)
po porovnávání re textu (NEPODPORUJE SE)
(?<!re)
po neshodě re textu (NEPODPOROVÁNO)
re&
před porovnávání re textu (NEPODPORUJE SE) VIRTUÁLNÍ POČÍTAČ
re@=
před porovnávání re textu (NEPODPORUJE SE) VIRTUÁLNÍ POČÍTAČ
re@!
před neshodou re textu (NEPODPOROVÁNO) virtuálního počítače
re@<=
po porovnávání re textu (NEPODPOROVÁNO) VIM
re@<!
po neshodě re textu (NEPODPOROVÁNO) virtuálního počítače
\zs
nastaví začátek shody (= \K) (NEPODPORUJE SE) virtuální POČÍTAČ
\ze
nastaví konec shody (NEPODPOROVÁNO) virtuálního počítače
\%^
začátek souboru (NEPODPOROVÁNO) VIM
\%$
end of file (NOT SUPPORTED) VIM
\%V
na obrazovce (NEPODPORUJE SE) VIRTUÁLNÍ POČÍTAČ
\%#
umístění kurzoru (NEPODPOROVÁNO) VIM
\%'m
označit m pozici (NEPODPOROVÁNO) VIRTUÁLNÍ POČÍTAČ
\%23l
na řádku 23 (NEPODPORUJE SE) VIRTUÁLNÍ POČÍTAČ
\%23c
ve sloupci 23 (NEPODPORUJE SE) VIRTUÁLNÍ POČÍTAČ
\%23v
virtuální počítač ve virtuálním sloupci 23 (NEPODPORUJE SE)
Řídicí sekvence
Příklad
Popis
\a
zvonek (≡ \007)
\f
podávání formulářů (≡ \014)
\t
vodorovná tabulátor (≡ \011)
\n
newline (≡ \012)
\r
návrat na začátek řádku (≡ \015)
\v
svislý znak tabulátoru (≡ \013)
\*
literál *, pro libovolný interpunkční znak *
\123
osmičkový znakový kód (až tři číslice)
\x7F
šestnáctkový znakový kód (přesně dvě číslice)
\x{10FFFF}
šestnáctkový kód znaku
\C
shoda s jedním bajtem i v režimu UTF-8
\Q...\E
literálový text ... , i když ... má interpunkční znaméčko
\1
backreference (NEPODPORUJE SE)
\b
backspace (NEPODPOROVÁNO) (použití \010)
\cK
znak ovládacího prvku ^K (NEPODPOROVÁNO) (použití \001 atd.)
\e
escape (NEPODPOROVÁNO) (použití \033)
\g1
backreference (NEPODPORUJE SE)
\g{1}
backreference (NEPODPORUJE SE)
\g{+1}
backreference (NEPODPORUJE SE)
\g{-1}
backreference (NEPODPORUJE SE)
\g{name}
pojmenované backreference (NEPODPORUJE SE)
\g<name>
subroutine call (NOT SUPPORTED)
\g'name'
subroutine call (NOT SUPPORTED)
\k<name>
pojmenované backreference (NEPODPORUJE SE)
\k'name'
pojmenované backreference (NEPODPORUJE SE)
\lX
malá písmena X (NEPODPOROVÁNO)
\ux
velká písmena x (NEPODPOROVÁNO)
\L...\E
malá písmena ... (NEPODPOROVÁNO)
\K
resetování začátku $0 (NEPODPOROVÁNO)
\N{name}
pojmenovaný znak Unicode (NEPODPORUJE SE)
\R
konec řádku (NEPODPORUJE SE)
\U...\E
text s velkými písmeny ... (NEPODPORUJE SE)
\X
rozšířená sekvence Unicode (NEPODPORUJE SE)
\%d123
decimal character 123 (NOT SUPPORTED) VIM
\%xFF
Šestnáctkový znak FF (NEPODPORUJE SE) VIRTUÁLNÍ POČÍTAČ
\%o123
osmičkový znak 123 (NEPODPORUJE SE) VIRTUÁLNÍ POČÍTAČ
\%u1234
Virtuální počítač s znakem Unicode 0x1234 (NEPODPORUJE SE)
\%U12345678
Virtuální počítač s znakem Unicode 0x12345678 (NEPODPORUJE SE)
Prvky třídy znaků
Příklad
Popis
x
jeden znak
A-Z
rozsah znaků (včetně)
\d
Perl character – třída
[:foo:]
Třída znaků ASCII foo
\p{Foo}
Znaková třída Unicode Foo
\pF
Třída F znaků Unicode (název jednoho písmena)
Pojmenované třídy znaků jako elementy třídy znaků
Příklad
Popis
[\d]
číslice (≡ \d)
[^\d]
not digits (≡ \D)
[\D]
not digits (≡ \D)
[^\D]
not digits (≡ \d)
[[:name:]]
pojmenovaná třída ASCII uvnitř třídy znaků (≡ [:name:])
[^[:name:]]
pojmenovaná třída ASCII uvnitř negated třídy znaků (≡ [:^name:])
[\p{Name}]
Pojmenovaná vlastnost Unicode uvnitř třídy znaků (≡ \p{Name})
[^\p{Name}]
Pojmenovaná vlastnost Unicode uvnitř negated třídy znaků (≡ \P{Name})
Připravujeme: V průběhu roku 2024 budeme postupně vyřazovat problémy z GitHub coby mechanismus zpětné vazby pro obsah a nahrazovat ho novým systémem zpětné vazby. Další informace naleznete v tématu: https://aka.ms/ContentUserFeedback.