Sdílet prostřednictvím


Syntaxe RE2

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)
[xyz] character – třída
[^xyz] negated character – třída
\d Perl character – třída
\D negated Perl character – třída
[[:alpha:]] Třída znaků ASCII
[[:^alpha:]] negated ASCII character class
\pN Třída znaků Unicode (název jednoho písmena)
\p{Greek} Znaková třída Unicode
\PN negated Unicode character class (one-letter name)
\P{Greek} negated Unicode character class

Kompozity

Příklad Popis
xy x a pak y
x\|y x nebo y (preferovat x)

Opakování

Příklad Popis
x* nula nebo více x, raději více
x+ jeden nebo více x, preferovat více
x? nula nebo jedna x, preferovat jeden
x{n,m} n nebo n+1 nebo ... nebo m x, preferovat více
x{n,} n nebo více x, raději více
x{n} přesně n x
x*? nula nebo více x, raději míň
x+? jeden nebo více x, preferovat míň
x?? nula nebo jedna x, upřednostněte nulu
x{n,m}? n nebo n+1 nebo ... nebo m x, preferovat míň
x{n,}? n nebo více x, raději míň
x{n}? přesně n x
x{} (≡ x*) (NEPODPORUJE SE) VIRTUÁLNÍ POČÍTAČ
x{-} (≡ x*?) (NEPODPORUJE SE) VIRTUÁLNÍ POČÍTAČ
x{-n} (≡ x{n}?) (NEPODPORUJE SE) VIRTUÁLNÍ POČÍTAČ
x= (≡ x?) (NEPODPORUJE SE) VIRTUÁLNÍ POČÍTAČ

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 m x, přivlastňovací (NEPODPOROVÁNO)
x{n,}+ n nebo více x, přivlastňovací (NEPODPOROVÁNO)
x{n}+ přesně n x, 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 regexFlags flags= .

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})

Třídy znaků Perl

Jenom ASCII

Příklad Popis
\d číslice (≡ [0-9])
\D not digits (≡ [^0-9])
\s prázdné znaky (≡ [\t\n\f\r ])
\S prázdné znaky (≡ [^\t\n\f\r ])
\w znaky slova (≡ [0-9A-Za-z_])
\W neslovné znaky (≡ [^0-9A-Za-z_])
\h vodorovný prostor (NEPODPORUJE SE)
\H ne vodorovný prostor (NEPODPORUJE SE)
\v svislý prostor (NEPODPORUJE SE)
\V not vertical space (NOT SUPPORTED)

Třídy znaků ASCII

Příklad Popis
[[:alnum:]] alfanumerické (≡ [0-9A-Za-z])
[[:alpha:]] abecední (≡ [A-Za-z])
[[:ascii:]] ASCII (≡ [\x00-\x7F])
[[:blank:]] blank (≡ [\t ])
[[:cntrl:]] control (≡ [\x00-\x1F\x7F])
[[:digit:]] číslice (≡ [0-9])
[[:graph:]] grafické (≡ ≡ [!-~] [A-Za-z0-9!"#$%&'()*+,\-./:;<=>?@[\\\]^_ { |}~])
[[:lower:]] malá písmena (≡ [a-z])
[[:print:]] tisknutelné (≡ ≡ [ -~] [ [:graph:]])
[[:punct:]] interpunkce (≡ [!-/:-@[- {-~])
[[:space:]] prázdné znaky (≡ [\t\n\v\f\r ])
[[:upper:]] velká písmena (≡ [A-Z])
[[:word:]] znaky slova (≡ [0-9A-Za-z_])
[[:xdigit:]] šestnáctkové číslice (≡ [0-9A-Fa-f])

Názvy tříd znaků Unicode

OBECNÉ

Příklad Popis
C other
Cc – ovládací prvek
Cf format
Cn Nepřiřazené body kódu (NEPODPOROVANÉ)
Co privátní použití
Cs náhrada
L dopis
LC Velké písmeno (NEPODPOROVÁNO)
L& Velké písmeno (NEPODPOROVÁNO)
Ll malá písmena
Lm modifikační písmeno
Lo jiné písmeno
Lt písmeno nadpisu
Lu velké písmeno
M mark
Mc Znaménko mezer
Me ohraničení značky
Mn značka pro mezery
N Číslo
Nd desetinné číslo
Nl číslo písmena
No jiné číslo
P interpunkce
Pc Interpunkce spojnice
Pd přerušovaná interpunkce
Pe zavřít interpunkci
Pf konečná interpunkce
Pi počáteční interpunkce
Po jiná interpunkce
Ps otevření interpunkce
S – symbol
Sc symbol měny
Sk modifikační symbol
Sm matematický symbol
So jiný symbol
Z oddělovač
Zl oddělovač řádků
Zp oddělovač odstavců
Zs oddělovač mezer

Skripty

Skripty
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

Třídy znaků Vim

Příklad Popis
\i Virtuální počítač identifikátoru (NEPODPORUJE SE)
\I \i s výjimkou číslic (NEPODPOROVÁNO) virtuálního počítače
\k Virtuální počítač s klíčovým slovem (NEPODPOROVÁNO)
\K \k s výjimkou číslic (NEPODPOROVÁNO) virtuálního počítače
\f Virtuální počítač s názvem souboru (NEPODPORUJE SE)
\F \f s výjimkou číslic (NEPODPOROVÁNO) virtuálního počítače
\p tisknutelný znak (NEPODPOROVÁNO) VIM
\P \p s výjimkou číslic (NEPODPOROVÁNO) virtuálního počítače
\s prázdný znak (≡ [ \t]) (NEPODPOROVÁNO) VIM
\S Newhite space character (≡ [^ \t]) (NOT SUPPORTED) VIM
\d číslice (≡ [0-9]) VIM
\D nikoli \d virtuální počítač
\x šestnáctkové číslice (≡ [0-9A-Fa-f]) (NEPODPOROVÁNO) VIM
\X VIRTUÁLNÍ POČÍTAČ není \x (NEPODPORUJE SE)
\o osmičkové číslice (≡ [0-7]) (NEPODPOROVÁNO) virtuálního počítače
\O VIRTUÁLNÍ POČÍTAČ není \o (NEPODPORUJE SE)
\w Virtuální počítač s znakem slova
\W nikoli \w virtuální počítač
\h hlavní znak slova (NEPODPORUJE SE) VIRTUÁLNÍ POČÍTAČ
\H VIRTUÁLNÍ POČÍTAČ není \h (NEPODPORUJE SE)
\a abecední (NEPODPOROVANÁ) VIRTUÁLNÍ POČÍTAČ
\A VIRTUÁLNÍ POČÍTAČ není \a (NEPODPORUJE SE)
\l malá písmena (NEPODPOROVANÁ) VIRTUÁLNÍ POČÍTAČE
\L virtuální počítač není malými písmeny (NEPODPOROVÁNO)
\u velká písmena (NEPODPOROVANÁ) VIRTUÁLNÍ POČÍTAČE
\U virtuální počítač není velkými písmeny (NEPODPOROVÁNO)
\_x \x plus newline, pro jakýkoli x (NEPODPOROVANÁ) virtuální POČÍTAČE
\c IGNOROVAT VIRTUÁLNÍ POČÍTAČ S PŘÍPADEM (NEPODPORUJE SE)
\C Případ shody (NEPODPOROVÁNO) VIM
\m VIRTUÁLNÍ POČÍTAČ MAGIC (NEPODPORUJE SE)
\M VIRTUÁLNÍ POČÍTAČ NOMAGIC (NEPODPORUJE SE)
\v virtuální počítače verymagic (NEPODPOROVÁNO)
\V VIM velminomagic (NEPODPORUJE SE)
\Z ignorovat rozdíly ve kombinování znaků Unicode (NEPODPOROVÁNO) VIM

Magie

Příklad Popis
(?{code}) libovolný kód PERL (NEPODPORUJE SE)
(??{code}) odložení libovolného kódu Perl (NEPODPORUJE SE) PERL
(?n) rekurzivní volání skupiny n zachytávání regexp (NEPODPORUJE SE)
(?+n) rekurzivní volání relativní skupiny +n (NEPODPORUJE SE)
(?-n) rekurzivní volání relativní skupiny -n (NEPODPORUJE SE)
(?C) Popisek PCRE (NEPODPORUJE) PCRE
(?R) rekurzivní volání celého regexp (≡ (?0)) (NEPODPORUJE SE)
(?&name) rekurzivní volání pojmenované skupiny (NEPODPORUJE SE)
(?P=name) pojmenované backreference (NEPODPORUJE SE)
(?P>name) rekurzivní volání pojmenované skupiny (NEPODPORUJE SE)
(?(cond)true\|false) podmíněná větev (NEPODPORUJE SE)
(?(cond)true) podmíněná větev (NEPODPORUJE SE)
(*ACCEPT) nastavení regulárních výrazů jako Prolog (NEPODPORUJE SE)
(*COMMIT) (NEPODPORUJE SE)
(*F) (NEPODPORUJE SE)
(*FAIL) (NEPODPORUJE SE)
(*MARK) (NEPODPORUJE SE)
(*PRUNE) (NEPODPORUJE SE)
(*SKIP) (NEPODPORUJE SE)
(*THEN) (NEPODPORUJE SE)
(*ANY) nastavení konvence newline (NEPODPORUJE SE)
(*ANYCRLF) (NEPODPORUJE SE)
(*CR) (NEPODPORUJE SE)
(*CRLF) (NEPODPORUJE SE)
(*LF) (NEPODPORUJE SE)
(*BSR_ANYCRLF) set \R convention (NOT SUPPORTED) PCRE
(*BSR_UNICODE) (NEPODPORUJE SE) PCRE