Syntaxe RE2

Tento článek poskytuje 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í 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)
[xyz] character – třída
[^xyz] negovaná třída znaků
\d Třída znaků Perl
\D negovaná třída znaků Perl
[[:alpha:]] Znaková třída ASCII
[[:^alpha:]] negovaná znaková třída ASCII
\pN Znaková třída Unicode (jedno písmena)
\p{Greek} Znaková třída Unicode
\PN 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})

Třídy znaků Perl

Jenom ASCII

Příklad Description
\d číslice (≡ [0-9])
\D not digits (≡ [^0-9])
\s prázdné znaky (≡ [\t\n\f\r ])
\S bez prázdných znaků (≡ [^\t\n\f\r ])
\w znaky slova (≡ [0-9A-Za-z_])
\W ne znaky slova (≡ [^0-9A-Za-z_])
\h vodorovná mezera (NENÍ PODPOROVÁNO)
\H není vodorovný prostor (NENÍ PODPOROVÁNO)
\v svislý prostor (NENÍ PODPOROVÁNO)
\V není svislý prostor (NENÍ PODPOROVÁNO)

Třídy znaků ASCII

Příklad Description
[[: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é (≡ [!-~][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 Description
C other
Cc – ovládací prvek
Cf formát
Cn nepřiřazené body kódu (NEPODPOROVÁNO)
Co soukromé použití
Cs Náhradní
L Písmeno
LC velká písmena (NEPODPOROVÁNO)
L& velká písmena (NEPODPOROVÁNO)
Ll malé písmeno
Lm modifikační písmeno
Lo jiné písmeno
Lt písmeno titlecase
Lu velká písmena
M Označit
Mc Značka mezer
Me ohraničení značky
Mn značka nonspacing
N číslo
Nd desetinné číslo
Nl číslo písmena
No jiné číslo
P interpunkce
Pc interpunkce konektoru
Pd Interpunkce pomlčky
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č čar
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 Description
\i identifikátor (NEPODPOROVÁNO) VIM
\I \i kromě číslic (NEPODPOROVÁNO) VIM
\k znak klíčového slova (NEPODPOROVÁNO) VIM
\K \k kromě číslic (NEPODPOROVÁNO) VIM
\f znak názvu souboru (NEPODPOROVÁNO) VIM
\F \f kromě číslic (NEPODPOROVÁNO) VIM
\p printable character (NOT SUPPORTED) VIM
\P \p kromě číslic (NEPODPOROVÁNO) VIM
\s prázdný znak (≡ [ \t]) (NEPODPOROVÁNO) VIM
\S VIM bez prázdného znaku mezery (≡ [^ \t]) (NEPODPOROVÁNO)
\d digits (≡ [0-9]) VIM
\D not \d VIM
\x šestnáctkové číslice (≡ [0-9A-Fa-f]) (NEPODPOROVÁNO) VIM
\X virtuální počítač ( \x NEPODPOROVÁNO)
\o osmičkové číslice (≡ [0-7]) (NEPODPOROVÁNO) VIM
\O virtuální počítač ( \o NEPODPOROVÁNO)
\w word character VIM
\W not \w VIM
\h hlavní znak slova (NEPODPOROVÁNO) VIM
\H virtuální počítač ( \h NEPODPOROVÁNO)
\a alphabetic (NOT SUPPORTED) VIM
\A virtuální počítač ( \a NEPODPOROVÁNO)
\l VIM MALÝMI PÍSMENY (NEPODPOROVÁNO)
\L virtuální počítač s malými písmeny (NEPODPOROVÁNO)
\u VIM s velkými písmeny (NEPODPOROVÁNO)
\U virtuální počítač s velkými písmeny (NEPODPOROVÁNO)
\_x \x plus nový řádek, pro všechny x virtuální počítače (NEPODPOROVÁNO)
\c ignorovat velká a malá písmena (NEPODPOROVÁNO) VIM
\C match case (NOT SUPPORTED) VIM
\m magic (NEPODPOROVÁNO) VIM
\M nomagic (NEPODPOROVÁNO) VIM
\v verymagic (NOT SUPPORTED) VIM
\V verynomagic (NOT SUPPORTED) VIM
\Z ignorovat rozdíly v kódování Unicode kombinující znaky (NEPODPOROVÁNO) VIM

Magie

Příklad Description
(?{code}) libovolný kód PERL (NEPODPOROVÁNO) PERL
(??{code}) odložení libovolného kódu PERL (NEPODPOROVÁNO) PERL
(?n) rekurzivní volání zachytávání skupiny n regexp (NEPODPORUJE se)
(?+n) rekurzivní volání do relativní skupiny +n (NEPODPORUJE se)
(?-n) rekurzivní volání do relativní skupiny -n (NEPODPORUJE se)
(?C) Popisek PCRE (NEPODPOROVÁNO) PCRE
(?R) rekurzivní volání celého regexp (≡ (?0)) (NEPODPOROVÁNO)
(?&name) rekurzivní volání pojmenované skupiny (NEPODPORUJE se)
(?P=name) pojmenované zpětné odkazy (NEPODPOROVÁNO)
(?P>name) rekurzivní volání pojmenované skupiny (NEPODPORUJE se)
(?(cond)true\|false) podmíněná větev (NEPODPOROVÁNO)
(?(cond)true) podmíněná větev (NEPODPOROVÁNO)
(*ACCEPT) make regexps more like Prolog (NOT SUPPORTED)
(*COMMIT) (NEPODPORUJE SE)
(*F) (NEPODPORUJE SE)
(*FAIL) (NEPODPORUJE SE)
(*MARK) (NEPODPORUJE SE)
(*PRUNE) (NEPODPORUJE SE)
(*SKIP) (NEPODPORUJE SE)
(*THEN) (NEPODPORUJE SE)
(*ANY) nastavit konvenci nového řádku (NEPODPOROVÁNO)
(*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