Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Přepněte služby pomocí rozevíracího seznamu Verze . Přečtěte si další informace o navigaci.
Platí pro: ✅ Microsoft Fabric ✅ Azure Data Explorer ✅ Azure Monitor ✅ Microsoft Sentinel
Tento článek obsahuje přehled syntaxe regulárních výrazů podporovaných dotazovací jazyk Kusto (KQL).
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 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.
Syntaxe
Následující části dokumentují syntaxi regulárního výrazu podporovanou Kusto.
Shoda s jedním znakem
| Vzor | Popis |
|---|---|
. |
Libovolný znak kromě nového řádku (zahrnuje nový řádek s příznakem s). |
[0-9] |
Libovolná číslice ASCII. |
[^0-9] |
Libovolný znak, který není číslicí ASCII. |
\d |
Číslice (\p{Nd}). |
\D |
Ne číslice. |
\pX |
Třída znaků Unicode identifikovaná jedním písmenem. |
\p{Greek} |
Třída znaků Unicode (obecná kategorie nebo skript) |
\PX |
Negated Unicode character class identifikovaný jedním písmenem názvu. |
\P{Greek} |
Negated Unicode character class (obecná kategorie nebo skript). |
Třídy znaků
| Vzor | Popis |
|---|---|
[xyz] |
Třída znaků odpovídající x, y nebo z (sjednocení). |
[^xyz] |
Třída znaků odpovídající libovolnému znaku kromě x, y a z. |
[a-z] |
Třída znaků odpovídající libovolnému znaku v rozsahu a-z. |
[[:alpha:]] |
Třída znaků ASCII ([A-Za-z]). |
[[:^alpha:]] |
Negated ASCII character class ([^A-Za-z]). |
[x[^xyz]] |
Vnořená/seskupovací třída znaků (odpovídající libovolnému znaku kromě y a z). |
[a-y&&xyz] |
Průnik (odpovídající x nebo y). |
[0-9&&[^4]] |
Odčítání pomocí průsečíku a negace (odpovídající 0-9 s výjimkou 4). |
[0-9--4] |
Přímé odčítání (odpovídající 0–9 s výjimkou 4) |
[a-g~~b-h] |
Symetrický rozdíl (porovnávání a a h pouze). |
[\[\]] |
Řídicí znak ve třídách znaků (odpovídající [ nebo ]). |
[a&&b] |
Prázdná třída znaků, která neodpovídá nic. |
Poznámka:
Každá pojmenovaná třída znaků se může objevit uvnitř třídy závorek [...] znaků. Například [\p{Greek}[:digit:]] odpovídá libovolné číslici ASCII nebo libovolnému bodu kódu ve Greek skriptu.
[\p{Greek}&&\pL] odpovídá řeckým písmenem.
Priorita ve třídách znaků je z většiny vazeb na nejmenší vazbu:
- Rozsahy:
[a-cd]==[[a-c]d] - Svaz:
[ab&&bc]==[[ab]&&[bc]] - Průnik, rozdíl, symetrický rozdíl: Všechny mají ekvivalentní prioritu a vyhodnocují se zleva doprava. Například
[\pL--\p{Greek}&&\p{Uppercase}]==[[\pL--\p{Greek}]&&\p{Uppercase}]. - Negace:
[^a-z&&b]==[^[a-z&&b]].
Kompozity
| Vzor | Popis |
|---|---|
xy |
Zřetězení (x následované y) |
x\|y |
Alternace (x nebo y , preferovat x) |
Opakování
| Vzor | Popis |
|---|---|
x* |
Nula nebo více x (greedy) |
x+ |
Jeden nebo více x (greedy) |
x? |
Nula nebo jedna z x (greedy) |
x*? |
Nula nebo více x (negreedy/opožděné) |
x+? |
Minimálně jeden z x (negreedy/opožděný) |
x?? |
Nula nebo jedna z x (negreedy/opožděná) |
x{n,m} |
Alespoň n x a nejvýše m x (greedy) |
x{n,} |
Alespoň n x (greedy) |
x{n} |
Přesně n x |
x{n,m}? |
Alespoň n x a maximálně m x (bezgreedy/opožděné) |
x{n,}? |
Alespoň n x (negreedy/opožděný) |
x{n}? |
Přesně n x |
Prázdné shody
| Vzor | Popis |
|---|---|
^ |
Začátek sena nebo start-of-line s víceřádkovým režimem. |
$ |
Konec sena nebo konec řádku s víceřádkovým režimem. |
\A |
Pouze začátek haystacku, i když je povolen víceřádkový režim. |
\z |
Pouze konec sena, i když je povolen víceřádkový režim. |
\b |
Hranice slova Unicode s \w jednou stranou a \W, \Anebo \z na druhé. |
\B |
Nejedná se o hranici slova Unicode. |
\b{start}, \< |
Na začátku řetězce a \W\|\A na druhé straně unicode je ohraničení \w slovem. |
\b{end}, \> |
Hranice konce slova unicode s \w jednou stranou a \W\|\z na konci. |
\b{start-half} |
Polovina počátečního slova unicode hranice na \W\|\A začátku hranice. |
\b{end-half} |
Polovina hranice konce slova Unicode s \W\|\z na konci. |
Seskupování a příznaky
| Vzor | Popis |
|---|---|
(exp) |
Číslovaná skupina zachycení (indexovaná levou závorku). |
(?P<name>exp) |
Pojmenovaná skupina zachycení (názvy musí být alfanumerické). |
(?<name>exp) |
Pojmenovaná skupina zachycení (názvy musí být alfanumerické). |
(?:exp) |
Skupina, která se nezachytává. |
(?flags) |
Nastavte příznaky v rámci aktuální skupiny. |
(?flags:exp) |
Nastavte příznaky pro exp (nezachytávání). |
Názvy skupin zachycení mohou obsahovat pouze alfanumerické body kódu Unicode, tečky ., podtržítka _a hranaté závorky[ a ]. Názvy musí začínat znakem _ abecedy. Abecední kódové body odpovídají Alphabetic vlastnosti Unicode, zatímco číselné body kódu odpovídají sjednocení Decimal_Numbera Letter_NumberOther_Number obecné kategorie.
Příznaky jsou jednoduché znaky. Například (?x) nastaví příznak x a (?-x) vymaže příznak x. Najednou můžete nastavit nebo vymazat více příznaků: (?xy) nastaví příznak i xy příznak a (?x-y) příznak vymaže xy . Ve výchozím nastavení jsou všechny příznaky zakázány, pokud není uvedeno jinak. Mezi ně patří:
| Příznak | Popis |
|---|---|
i |
Nerozlišují se velká a malá písmena: písmena odpovídají velkým i menšímu písmenu. |
m |
Víceřádkový režim: ^ a $ porovná začátek/konec řádku. |
s |
Povolit tečku (.). aby se shodovaly \n. |
R |
Povolí režim CRLF: pokud je povolený víceřádkový režim, \r\n použije se. |
U |
Prohození významu x* a x*?. |
u |
Podpora unicode (ve výchozím nastavení povolená) |
x |
Podrobný režim, ignoruje prázdné znaky a povolí řádkové komentáře (počínaje #). |
Ve podrobném režimu se prázdné znaky ignorují všude, včetně tříd znaků. Pokud chcete vložit prázdné znaky, použijte jeho řídicí tvar nebo šestnáctkový literál. Například \ pro \x20 mezeru v ASCII.
Poznámka:
- Příznaky lze přepínat v rámci vzoru. Například následující syntaxe používá shodu nerozlišující malá a velká písmena pro první část a shodu s rozlišováním velkých a malých písmen pro druhou část:
(?i)a+(?-i)b+. -
a+odpovídá buďaneboA, aleb+jediné shodyb. - Režim víceřádkového režimu znamená
^, že$se už neshoduje jen na začátku nebo na konci vstupu, ale také na začátku nebo na konci řádků. Všimněte si, že^odpovídá za novými řádky, a to i na konci vstupu. - Pokud je povolen režim CRLF i víceřádkový režim, pak a porovná
^buď a$\r, ale nikdy uprostřed\n.\r\n - Režim Unicode lze také selektivně zakázat, i když se výsledek neshoduje s neplatným kódováním UTF-8. Například použití hranice slova ASCII místo hranice slova Unicode může zrychlit hledání regulárních výrazů:
(?-u:\b).+(?-u:\b)aby odpovídaly$$abc$$.
Řídicí sekvence
| Vzor | Popis |
|---|---|
\* |
Literál *, platí pro všechny ASCII s výjimkou [0-9A-Za-z<>] |
\a |
Zvonek (\x07) |
\f |
Informační kanál formuláře (\x0C) |
\t |
Horizontální tabulátor |
\n |
Nový řádek |
\r |
Návrat na začátek řádku |
\v |
Svislá karta (\x0B) |
\A |
Odpovídá na začátku sena |
\z |
Zápasy na konci sena |
\b |
Kontrolní výraz hranice slova |
\B |
Kontrolní výraz hranice negated slova |
\b{start}, \< |
Počáteční výraz hranice slova |
\b{end}, \> |
Kontrolní výraz hranice konce slova |
\b{start-half} |
Polovina kontrolního výrazu hranice začátku slova |
\b{end-half} |
Polovina kontrolního výrazu hranice konce slova |
\123 |
Osmičkový kód znaku, až tři číslice |
\x7F |
Šestnáctkový znakový kód (přesně dvě číslice) |
\x{10FFFF} |
Šestnáctkový kód znaku odpovídající bodu kódu Unicode |
\u007F |
Šestnáctkový znakový kód (přesně čtyři číslice) |
\u{7F} |
Šestnáctkový kód znaku odpovídající bodu kódu Unicode |
\U0000007F |
Šestnáctkový znakový kód (přesně osm číslic) |
\U{7F} |
Šestnáctkový kód znaku odpovídající bodu kódu Unicode |
\p{Letter} |
Znaková třída Unicode |
\P{Letter} |
Negated Unicode character class |
\d, , \s\w |
Perl character – třída |
\D, , \S\W |
Negated Perl character – třída |
Třídy znaků Perl (popisné pro Unicode)
Tyto třídy jsou založené na definicích poskytovaných v UTS#18:
| Vzor | Popis |
|---|---|
\d |
Ddigit (\p{Nd}) |
\D |
Neciferné číslo |
\s |
Prázdné znaky (\p{White_Space}) |
\S |
Prázdné znaky |
\w |
Znak wordu (\p{Alphabetic} + \p{M} + \d + \p{Pc} + \p{Join_Control}) |
\W |
Neslovný znak |
Třídy znaků ASCII
Tyto třídy jsou založené na definicích poskytovaných v UTS#18:
| Vzor | Popis |
|---|---|
[[:alnum:]] |
Alfanumerické ([0-9A-Za-z]) |
[[:alpha:]] |
Abecední ([A-Za-z]) |
[[:ascii:]] |
ASCII ([\x00-\x7F]) |
[[:blank:]] |
Prázdné ([\t ]) |
[[:cntrl:]] |
Ovládací prvek ([\x00-\x1F\x7F]) |
[[:digit:]] |
Číslice ([0-9]) |
[[:graph:]] |
Grafické ([!-~]) |
[[:lower:]] |
Malé písmeno ([a-z]) |
[[:print:]] |
Tisknutelné ([ -~]) |
[[:punct:]] |
Interpunkce ([!-/:-@\[-`{-~]) |
[[:space:]] |
Prázdné znaky ([\t\n\v\f\r ]) |
[[:upper:]] |
Velká písmena ([A-Z]) |
[[:word:]] |
Znaky wordu ([0-9A-Za-z_]) |
[[:xdigit:]] |
Šestnáctkové číslice ([0-9A-Fa-f]) |
Výkon
Tato část obsahuje některé pokyny k rychlosti a využití prostředků výrazů regulárních výrazů.
Unicode může ovlivnit využití paměti a rychlost vyhledávání.
Regex KQL poskytuje prvotřídní podporu pro Unicode. V mnoha případech je dodatečná paměť potřebná k podpoře Unicode zanedbatelná a obvykle nemá vliv na rychlost vyhledávání.
Následuje několik příkladů tříd znaků Unicode, které můžou ovlivnit využití paměti a rychlost vyhledávání:
Využití paměti: Účinek Unicode primárně vzniká z použití tříd znaků Unicode. Třídy znaků Unicode mají tendenci být větší. Třída znaků například
\wve výchozím nastavení odpovídá přibližně 140 000 odlišným bodům kódu. To vyžaduje více paměti a může zpomalit kompilaci regulárních výrazů. Pokud ASCII splňuje vaše požadavky, použijte místo tříd Unicode třídy ASCII. Verze\wpouze ASCII může být vyjádřena několika způsoby, z nichž všechny jsou ekvivalentní.[0-9A-Za-z_] (?-u:\w) [[:word:]] [\w&&\p{ascii}]Rychlost vyhledávání: Unicode se obvykle zpracovává dobře, i když používáte velké třídy znaků Unicode. Některé z rychlejších interních modulů regulárních výrazů ale nedokážou zpracovat kontrolní výraz hranice slova v kódu Unicode. Pokud tedy nepotřebujete kontrolní výrazy hranice slov podporující unicode, můžete místo toho zvážit použití
(?-u:\b)\b. Používá(?-u:\b)definici znaku slova pouze ASCII, která může zlepšit rychlost vyhledávání.
Literály můžou zrychlit hledání.
Regulární výraz KQL má silnou schopnost rozpoznávat literály v rámci vzoru regulárních výrazů, což může výrazně urychlit vyhledávání. Pokud je to možné, včetně literálů ve vašem vzoru, může výrazně zlepšit výkon hledání. Například v regulárním výrazu \w+@\w+se první výskyty @ shodují a pak se provede zpětná shoda, aby \w+ bylo možné najít počáteční pozici.