Existuje řada operátorů a funkcí KQL, které provádějí párování, výběr a extrakci řetězců s regulárními výrazy, například matches regex, parsea replace_regex().
V KQL musí být regulární výrazy zakódovány jako řetězcové literály a musí se řídit pravidly řetězcových uvozování. Například regulární výraz \A RE2 je v KQL reprezentován jako "\\A". Zpětné lomítko navíc znamená, ž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
Description
Jednoduché literály
Jednotlivé znaky se shodují s výjimkou metaznakátorů (* + ? ( ) |), které mají jedinečný význam, jak je popsáno v následujících řádcích.
Metaznaky
Chcete-li doslova shodovat metaznak, utečete ho zpětnými lomítky. Například regulární výraz \+ odpovídá literálu plus (+).
Alternace
Střídám dva výrazy s | a vytvořte nový výraz, který odpovídá některému z těchto výrazů. Například odpovídá e1 | e2 buď nebo e1e2.
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 shody e1e2e1 následované e2.
Opakování
Metaznaátory ?, +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 nula 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í (výrazy vedle sebe) a opakování (?, +, *). Pomocí závorek můžete řídit pořadí vyhodnocení.
Jednoznakový výraz
Příklad
Description
.
libovolný znak, případně včetně nového řádku (s=true)
negovaná znaková třída Unicode (jednomísmenný název)
\P{Greek}
negovaná třída znaků Unicode
Composites
Příklad
Description
xy
x a pak y
x\|y
x nebo y (preferovat x)
Opakování
Příklad
Description
x*
nula nebo více x, preferovat více
x+
jeden nebo více x, preferovat více
x?
nula nebo jedna x, raději jeden
x{n,m}
n nebo n+1 nebo ... nebo mx, preferovat více
x{n,}
n nebo více x, preferovat více
x{n}
Přesně nx
x*?
nula nebo více x, upřednostněte méně
x+?
jeden nebo více x, upřednostněte méně
x??
nula nebo jedna x, raději nula
x{n,m}?
n nebo n+1 nebo ... nebo mx, upřednostněte méně
x{n,}?
n nebo více x, upřednostněte méně
x{n}?
Přesně nx
x{}
(≡ x*) (NEPODPOROVÁNO) VIM
x{-}
(≡ x*?) (NEPODPOROVÁNO) VIM
x{-n}
(≡ x{n}?) (NEPODPOROVÁNO) VIM
x=
(≡ x?) (NEPODPOROVÁNO) VIM
Omezení implementace: Formuláře pro počítání x{n,m}, x{n,} a x{n} odmítnou formuláře, které vytvářejí minimální nebo maximální počet opakování vyšší než 1000. Neomezené opakování toto omezení nepodléhá.
Přivlastňovací opakování
Příklad
Description
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)
Seskupování
Příklad
Description
(re)
číslovaná skupina zachycení (podsoučát)
(?P<name>re)
pojmenovaná & číslovaná skupina zachycení (podsložka)
(?<name>re)
pojmenovaná & číslovaná zachytávkovaná skupina (dílčímatch) (NEPODPORUJE se)
(?'name're)
pojmenovaná & číslovaná zachytávkovaná skupina (dílčímatch) (NEPODPORUJE se)
(?:re)
skupina bez zachytávání
(?flags)
nastavit příznaky v rámci aktuální skupiny; bez zachytávání
(?flags:re)
nastavit příznaky během re; bez zachytávání
(?#text)
komentář (NEPODPOROVÁNO)
(?\|x\|y\|z)
resetování číslování větví (NEPODPOROVÁNO)
(?>re)
přivlastňovací shoda re (NEPODPOROVÁNO)
re@>
přivlastňovací shoda virtuálního počítače re (NEPODPOROVÁNO)
%(re)
VIM bez zachytávání skupin (NEPODPOROVÁNO)
Příznaky
Příklad
Description
i
Nerozlišují se malá a malá písmena (výchozí hodnota false)
m
režim s více řádky: ^ a porovnávání počátečního a $ koncového řádku kromě počátečního a koncového textu (výchozí false)
s
let . match \n (výchozí false)
U
ungreedy: prohození významu 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, musíte zadat kind parametry a flags následujícím způsobem: kind=regexflags=regexFlags.
Prázdné řetězce
Příklad
Description
^
na začátku textu nebo řádku (m=true)
$
na konci textu (jako \z ne\Z) nebo na řádku (m=true)
\A
na začátku textu
\b
na hranici slova ASCII (\w na jedné straně a \W, \Anebo \z na druhé straně)
\B
not na hranici slova ASCII
\g
na začátku hledaného podtextu (NEPODPORUJE se) PCRE
\G
na konci poslední shody (NEPODPOROVÁNO) PERL
\Z
na konci textu nebo před novým řádekm na konci textu (NENÍ PODPOROVÁNO)
\z
na konci textu
(?=re)
před shodou re textu (NEPODPOROVÁNO)
(?!re)
před textem, který re neodpovídá (NENÍ PODPOROVÁNO)
(?<=re)
po shodě re textu (NENÍ PODPOROVÁNO)
(?<!re)
po neshodě re s textem (NENÍ PODPOROVÁNO)
re&
před porovnávání re textu (NEPODPOROVÁNO) VIM
re@=
před porovnávání re textu (NEPODPOROVÁNO) VIM
re@!
před textem, který neodpovídá re (NEPODPOROVÁNO) virtuálních počítačů
re@<=
po porovnávání re textu (NEPODPORUJE se) VIM
re@<!
po neshodě re s textem (NEPODPOROVÁNO) VIM
\zs
nastaví začátek shody (= \K) (NEPODPOROVÁNO) VIM
\ze
nastaví konec shody (NEPODPOROVÁNO) VIM
\%^
začátek souboru (NEPODPOROVÁNO) VIM
\%$
end of file (NOT SUPPORTED) VIM
\%V
on screen (NOT SUPPORTED) VIM
\%#
umístění kurzoru (NEPODPOROVÁNO) VIM
\%'m
označení m pozice (NEPODPOROVÁNO) VIM
\%23l
v řádku 23 (NEPODPOROVÁNO) VIM
\%23c
ve sloupci 23 (NEPODPOROVÁNO) VIM
\%23v
ve virtuálním sloupci 23 (NEPODPOROVÁNO) VIM
Řídicí sekvence
Příklad
Description
\a
zvonek (≡ \007)
\f
informační kanál formuláře (≡ \014)
\t
vodorovná tabulátor (≡ \011)
\n
newline (≡ \012)
\r
návrat k řádku (≡ \015)
\v
svislý znak tabulátoru (≡ \013)
\*
literál *pro libovolný interpunkční znamér *
\123
osmičkový kód znaku (až tři číslice)
\x7F
šestnáctkový kód znaku (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á interpunkci
\1
backreference (NEPODPOROVÁNO)
\b
backspace (NEPODPOROVÁNO) (použijte \010)
\cK
control char ^K (NENÍ PODPOROVÁNO) (použití \001 atd.)
\e
escape (NEPODPOROVÁNO) (použijte \033)
\g1
backreference (NEPODPOROVÁNO)
\g{1}
backreference (NEPODPOROVÁNO)
\g{+1}
backreference (NEPODPOROVÁNO)
\g{-1}
backreference (NEPODPOROVÁNO)
\g{name}
pojmenovaná backreference (NEPODPOROVÁNO)
\g<name>
podprogramové volání (NEPODPOROVÁNO)
\g'name'
podprogramové volání (NEPODPOROVÁNO)
\k<name>
pojmenovaná backreference (NEPODPOROVÁNO)
\k'name'
pojmenovaná backreference (NEPODPOROVÁNO)
\lX
malá písmena X (NEPODPOROVÁNO)
\ux
velká písmena x (NEPODPORUJE SE)
\L...\E
text ... s malými písmeny (NEPODPORUJE SE)
\K
resetování začátku $0 (NEPODPOROVÁNO)
\N{name}
pojmenovaný znak Unicode (NEPODPORUJE se)
\R
konec řádku (NEPODPORUJE SE)
\U...\E
text ... 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 (NEPODPOROVÁNO) VIM
\%o123
osmičkový znak 123 (NEPODPOROVÁNO) VIM
\%u1234
VIM 0x1234 znaků Unicode (NEPODPOROVÁNO)
\%U12345678
VIM 0x12345678 znaků Unicode (NEPODPOROVÁNO)
Prvky třídy znaků
Příklad
Description
x
jeden znak
A-Z
rozsah znaků (včetně)
\d
Třída znaků Perl
[:foo:]
Znaková třída ASCII foo
\p{Foo}
Znaková třída Unicode Foo
\pF
Znaková třída F Unicode (jedno písmena)
Pojmenované třídy znaků jako elementy třídy znaků
Příklad
Description
[\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ř negované třídy znaků (≡ [:^name:])
[\p{Name}]
Pojmenovaná vlastnost Unicode uvnitř třídy znaků (≡ \p{Name})
[^\p{Name}]
Pojmenovaná vlastnost Unicode uvnitř negované znakové třídy (≡ \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.