RE2-syntaxis

Dit artikel bevat een overzicht van de syntaxis van reguliere expressies die worden ondersteund door Kusto-querytaal (KQL). Dit is de syntaxis van de RE2-bibliotheek.

Er zijn een aantal KQL-operators en -functies waarmee tekenreeksen worden gevonden, geselecteerd en opgehaald met reguliere expressies, zoals matches regex, parseen replace_regex().

In KQL moeten reguliere expressies worden gecodeerd als letterlijke tekenreeksen en de regels voor het aanhalingsteken volgen. De reguliere RE2-expressie \A wordt bijvoorbeeld in KQL weergegeven als "\\A". De extra backslash geeft aan dat de andere backslash deel uitmaakt van de reguliere expressie \A.

Syntaxisoverzicht

De volgende tabel bevat een overzicht van de re2-syntaxis van reguliere expressies, die wordt gebruikt voor het schrijven van reguliere expressies in Kusto.

Syntaxiselement Description
Enkele letterlijke waarden Afzonderlijke tekens komen overeen met zichzelf, met uitzondering van metatekens (* + ? ( ) |), die een unieke betekenis hebben zoals beschreven in de volgende rijen.
Metatekens Als u een metateken letterlijk wilt vinden, moet u deze met backslashes laten ontsnappen. De reguliere expressie \+ komt bijvoorbeeld overeen met een letterlijk plusteken (+).
Afwisseling Vervang twee expressies door | om een nieuwe expressie te maken die overeenkomt met een van de expressies. Komt bijvoorbeeld e1 | e2 overeen met e1 of e2.
Samenvoeging Voeg twee expressies samen om een nieuwe expressie te maken die overeenkomt met de eerste expressie, gevolgd door de tweede. Komt bijvoorbeeld overeen e1 met e1e2 gevolgd door e2.
Herhaling Metatekens ?, +en * zijn herhalingsoperators. Komt bijvoorbeeld e1? overeen met nul of één exemplaar van e1, e1+ komt overeen met een of meer exemplaren van e1en e1* komt overeen met een reeks van nul of meer, mogelijk verschillende, tekenreeksen die overeenkomen met e1.

Notitie

Reguliere expressieoperators evalueren in deze volgorde: alternatie (|), samenvoeging (expressies naast elkaar) en herhaling (?, +, *). Gebruik haakjes om de evaluatievolgorde te bepalen.

Expressies met één teken

Voorbeeld Beschrijving
. elk teken, mogelijk inclusief nieuwe regel (s=true)
[xyz] tekenklasse
[^xyz] negated character class
\d Perl-tekenklasse
\D negated Perl character class
[[:alpha:]] ASCII-tekenklasse
[[:^alpha:]] ontkende ASCII-tekenklasse
\pN Unicode-tekenklasse (naam van één letter)
\p{Greek} Unicode-tekenklasse
\PN ontkende Unicode-tekenklasse (naam van één letter)
\P{Greek} negated Unicode character class

Composiet

Voorbeeld Beschrijving
xy x gevolgd door y
x\|y x of y (liever x)

Herhalingen

Voorbeeld Beschrijving
x* nul of meer x, liever meer
x+ een of meer x, liever meer
x? nul of één x, liever één
x{n,m} n of n+1 of ... of mx, liever meer
x{n,} n of meer x, liever meer
x{n} Precies nx
x*? nul of meer x, liever minder
x+? een of meer x, liever minder
x?? nul of één x, liever nul
x{n,m}? n of n+1 of ... of mx, liever minder
x{n,}? n of meer x, liever minder
x{n}? Precies nx
x{} (≡ x*) (NIET ONDERSTEUND) VIM
x{-} (≡ x*?) (NIET ONDERSTEUND) VIM
x{-n} (≡ x{n}?) (NIET ONDERSTEUND) VIM
x= (≡ x?) (NIET ONDERSTEUND) VIM

Implementatiebeperking: de telformulieren x{n,m}, x{n,} en x{n} weigeren formulieren die een minimum- of maximumaantal herhalingen van meer dan 1000 maken. Onbeperkte herhalingen zijn niet onderhevig aan deze beperking.

Bezittelijke herhalingen

Voorbeeld Beschrijving
x*+ nul of meer x, bezittelijk (NIET ONDERSTEUND)
x++ een of meer x, bezittelijk (NIET ONDERSTEUND)
x?+ nul of één x, bezittelijk (NIET ONDERSTEUND)
x{n,m}+ n Of... of mx, bezittelijk (NIET ONDERSTEUND)
x{n,}+ n of meer x, bezittelijk (NIET ONDERSTEUND)
x{n}+ precies nx, bezittelijk (NIET ONDERSTEUND)

Groeperen

Voorbeeld Beschrijving
(re) genummerde vastleggende groep (submatch)
(?P<name>re) benoemd & genummerde vastleggende groep (submatch)
(?<name>re) benoemd & genummerde vastleggende groep (submatch) (NIET ONDERSTEUND)
(?'name're) benoemd & genummerde vastleggende groep (submatch) (NIET ONDERSTEUND)
(?:re) niet-incapturerende groep
(?flags) vlaggen instellen binnen de huidige groep; niet inkapseling
(?flags:re) vlaggen instellen tijdens re; niet inkapseling
(?#text) opmerking (NIET ONDERSTEUND)
(?\|x\|y\|z) opnieuw instellen van vertakkingsnummering (NIET ONDERSTEUND)
(?>re) bezitterige overeenkomst van re (NIET ONDERSTEUND)
re@> bezittelijke overeenkomst van re (NIET ONDERSTEUND) VIM
%(re) niet-incapturerende groep (NIET ONDERSTEUND) VIM

Vlaggen

Voorbeeld Beschrijving
i niet hoofdlettergevoelig (standaard onwaar)
m modus met meerdere regels: ^ en $ overeenkomen met begin-/eindregel naast begin-/eindtekst (standaard onwaar)
s laten . overeenkomen \n (standaard onwaar)
U ungreedy: betekenis wisselen van x* en x*?, x+ en x+?, etc (standaard onwaar)

De syntaxis van de vlag is xyz (set) of -xyz (clear) of xy-z (set xy, clear z).

Als u vlaggen wilt gebruiken, moet u de kind parameters en flags als volgt opgeven: kind=regexflags=regexFlags.

Lege tekenreeksen

Voorbeeld Beschrijving
^ aan het begin van tekst of regel (m=waar)
$ aan het einde van tekst (zoals \z niet\Z) of regel (m=waar)
\A aan het begin van de tekst
\b bij ASCII-woordgrens (\w aan de ene kant en \W, \Aof \z aan de andere kant)
\B niet bij ASCII-woordgrens
\g aan het begin van de subtekst die wordt doorzocht (NIET ONDERSTEUND) PCRE
\G aan het einde van de laatste wedstrijd (NIET ONDERSTEUND) PERL
\Z aan het einde van tekst of vóór nieuwe regel aan het einde van tekst (NIET ONDERSTEUND)
\z aan het einde van de tekst
(?=re) vóór overeenkomende re tekst (NIET ONDERSTEUND)
(?!re) voor tekst die niet overeenkomt re (NIET ONDERSTEUND)
(?<=re) na overeenkomende re tekst (NIET ONDERSTEUND)
(?<!re) na tekst komt niet overeen re (NIET ONDERSTEUND)
re& vóór tekst die overeenkomt re met (NIET ONDERSTEUND) VIM
re@= vóór tekst die overeenkomt re met (NIET ONDERSTEUND) VIM
re@! vóór tekst die niet overeenkomt re (NIET ONDERSTEUND) VIM
re@<= na overeenkomende re tekst (NIET ONDERSTEUND) VIM
re@<! na tekst komt niet overeen re (NIET ONDERSTEUND) VIM
\zs stelt begin van overeenkomst (= \K) (NIET ONDERSTEUND) VIM in
\ze stelt einde van overeenkomst in (NIET ONDERSTEUND) VIM
\%^ begin van bestand (NIET ONDERSTEUND) VIM
\%$ einde van bestand (NIET ONDERSTEUND) VIM
\%V op het scherm (NIET ONDERSTEUND) VIM
\%# cursorpositie (NIET ONDERSTEUND) VIM
\%'m positie markeren m (NIET ONDERSTEUND) VIM
\%23l in regel 23 (NIET ONDERSTEUND) VIM
\%23c in kolom 23 (NIET ONDERSTEUND) VIM
\%23v in virtuele kolom 23 (NIET ONDERSTEUND) VIM

Escape-reeksen

Voorbeeld Beschrijving
\a bel (≡ \007)
\f formulierfeed (≡ \014)
\t horizontaal tabblad (≡ \011)
\n nieuwe regel (≡ \012)
\r regelterugloop (≡ \015)
\v verticaal tabteken (≡ \013)
\* literal *, voor elk interpunctieteken *
\123 octale tekencode (maximaal drie cijfers)
\x7F hextekencode (precies twee cijfers)
\x{10FFFF} hextekencode
\C komt overeen met een enkele byte, zelfs in de UTF-8-modus
\Q...\E letterlijke tekst ... , zelfs als ... interpunctie is
\1 backreference (NIET ONDERSTEUND)
\b backspace (NIET ONDERSTEUND) (gebruik \010)
\cK control char ^K (NOT SUPPORTED) (use \001 etc)
\e escape (NIET ONDERSTEUND) (gebruik \033)
\g1 backreference (NIET ONDERSTEUND)
\g{1} backreference (NIET ONDERSTEUND)
\g{+1} backreference (NIET ONDERSTEUND)
\g{-1} backreference (NIET ONDERSTEUND)
\g{name} named backreference (NIET ONDERSTEUND)
\g<name> subroutine-aanroep (NIET ONDERSTEUND)
\g'name' subroutine-aanroep (NIET ONDERSTEUND)
\k<name> named backreference (NIET ONDERSTEUND)
\k'name' named backreference (NIET ONDERSTEUND)
\lX kleine letters X (NIET ONDERSTEUND)
\ux hoofdletters x (NIET ONDERSTEUND)
\L...\E kleine letters ... (NIET ONDERSTEUND)
\K begin van $0 opnieuw instellen (NIET ONDERSTEUND)
\N{name} benoemd Unicode-teken (NIET ONDERSTEUND)
\R regeleinde (NIET ONDERSTEUND)
\U...\E hoofdletters ( ... NIET ONDERSTEUND)
\X uitgebreide Unicode-reeks (NIET ONDERSTEUND)
\%d123 decimaalteken 123 (NIET ONDERSTEUND) VIM
\%xFF hexteken FF (NIET ONDERSTEUND) VIM
\%o123 octaal teken 123 (NIET ONDERSTEUND) VIM
\%u1234 Unicode-teken 0x1234 (NIET ONDERSTEUND) VIM
\%U12345678 Unicode-teken 0x12345678 (NIET ONDERSTEUND) VIM

Tekenklasse-elementen

Voorbeeld Beschrijving
x één teken
A-Z tekenbereik (inclusief)
\d Perl-tekenklasse
[:foo:] ASCII-tekenklasse foo
\p{Foo} Unicode-tekenklasse Foo
\pF Unicode-tekenklasse F (naam van één letter)

Benoemde tekenklassen als tekenklasse-elementen

Voorbeeld Beschrijving
[\d] cijfers (≡ \d)
[^\d] geen cijfers (≡ \D)
[\D] geen cijfers (≡ \D)
[^\D] not not digits (≡ \d)
[[:name:]] benoemde ASCII-klasse binnen tekenklasse (≡ [:name:])
[^[:name:]] benoemde ASCII-klasse binnen de klasse ontkend teken (≡ [:^name:])
[\p{Name}] benoemde Unicode-eigenschap in tekenklasse (≡ \p{Name})
[^\p{Name}] benoemde Unicode-eigenschap in de klasse negated character (≡ \P{Name})

Perl-tekenklassen

ALLEEN ASCII

Voorbeeld Beschrijving
\d cijfers (≡ [0-9])
\D not digits (≡ [^0-9])
\s witruimte (≡ [\t\n\f\r ])
\S geen witruimte (≡ [^\t\n\f\r ])
\w woordtekens (≡ [0-9A-Za-z_])
\W geen woordtekens (≡ [^0-9A-Za-z_])
\h horizontale spatie (NIET ONDERSTEUND)
\H niet horizontale spatie (NIET ONDERSTEUND)
\v verticale ruimte (NIET ONDERSTEUND)
\V niet verticale ruimte (NIET ONDERSTEUND)

ASCII-tekenklassen

Voorbeeld Beschrijving
[[:alnum:]] alfanumeriek (≡ [0-9A-Za-z])
[[:alpha:]] alfabetisch (≡ [A-Za-z])
[[:ascii:]] ASCII (≡ [\x00-\x7F])
[[:blank:]] leeg (≡ [\t ])
[[:cntrl:]] besturingselement (≡ [\x00-\x1F\x7F])
[[:digit:]] cijfers (≡ [0-9])
[[:graph:]] grafisch (≡ [!-~][A-Za-z0-9!"#$%&'()*+,\-./:;<=>?@[\\\]^_{ |}~])
[[:lower:]] kleine letter (≡ [a-z])
[[:print:]] afdrukbaar (≡ [ -~][ [:graph:]])
[[:punct:]] interpunctie (≡ [!-/:-@[-{-~])
[[:space:]] witruimte (≡ [\t\n\v\f\r ])
[[:upper:]] hoofdletters (≡ [A-Z])
[[:word:]] woordtekens (≡ [0-9A-Za-z_])
[[:xdigit:]] hexcijfer (≡ [0-9A-Fa-f])

Unicode-tekenklassenamen

Algemeen

Voorbeeld Beschrijving
C other
Cc control
Cf indeling
Cn niet-toegewezen codepunten (NIET ONDERSTEUND)
Co privégebruik
Cs Surrogaat
L Brief
LC hoofdletter (NIET ONDERSTEUND)
L& hoofdletter (NIET ONDERSTEUND)
Ll kleine letter
Lm wijzigingsletter
Lo andere letter
Lt titelletter
Lu hoofdletter
M Mark
Mc afstandsmarkering
Me omsluitmarkering
Mn niet-overderende markering
N getal
Nd decimaal getal
Nl letternummer
No ander nummer
P interpunctie
Pc interpunctie van connector
Pd streepje interpunctie
Pe interpunctie sluiten
Pf laatste interpunctie
Pi eerste interpunctie
Po andere interpunctie
Ps leestekens openen
S Symbool
Sc valutasymbool
Sk wijzigingssymbool
Sm wiskundesymbool
So ander symbool
Z scheidingsteken
Zl regelscheidingsteken
Zp alineascheidingsteken
Zs spatiescheidingsteken

Scripts

Scripts
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

Vim-tekenklassen

Voorbeeld Beschrijving
\i id-teken (NIET ONDERSTEUND) VIM
\I \i behalve cijfers (NIET ONDERSTEUND) VIM
\k trefwoordteken (NIET ONDERSTEUND) VIM
\K \k behalve cijfers (NIET ONDERSTEUND) VIM
\f bestandsnaamteken (NIET ONDERSTEUND) VIM
\F \f behalve cijfers (NIET ONDERSTEUND) VIM
\p afdrukbaar teken (NIET ONDERSTEUND) VIM
\P \p behalve cijfers (NIET ONDERSTEUND) VIM
\s witruimteteken (≡ [ \t]) (NIET ONDERSTEUND) VIM
\S niet-wit spatieteken (≡ [^ \t]) (NIET ONDERSTEUND) VIM
\d digits (≡ [0-9]) VIM
\D niet \d VIM
\x hex digits (≡ [0-9A-Fa-f]) (NOT SUPPORTED) VIM
\X niet \x (NIET ONDERSTEUND) VIM
\o octale cijfers (≡ [0-7]) (NIET ONDERSTEUND) VIM
\O niet \o (NIET ONDERSTEUND) VIM
\w woordteken VIM
\W niet \w VIM
\h kop van woordteken (NIET ONDERSTEUND) VIM
\H niet \h (NIET ONDERSTEUND) VIM
\a alfabetische (NIET ONDERSTEUND) VIM
\A niet \a (NIET ONDERSTEUND) VIM
\l VIM met kleine letters (NIET ONDERSTEUND)
\L niet kleine letters (NIET ONDERSTEUND) VIM
\u HOOFDLETTERS (NIET ONDERSTEUND) VIM
\U niet in hoofdletters (NIET ONDERSTEUND) VIM
\_x \x plus newline, voor elke x (NIET ONDERSTEUND) VIM
\c case negeren (NIET ONDERSTEUND) VIM
\C matchcase (NIET ONDERSTEUND) VIM
\m magic (NIET ONDERSTEUND) VIM
\M nomagic (NIET ONDERSTEUND) VIM
\v verymagic (NIET ONDERSTEUND) VIM
\V verynomagic (NOT SUPPORTED) VIM
\Z verschillen in Unicode-combinatietekens negeren (NIET ONDERSTEUND) VIM

Magic

Voorbeeld Beschrijving
(?{code}) willekeurige Perl-code (NIET ONDERSTEUND) PERL
(??{code}) willekeurige Perl-code uitgesteld (NIET ONDERSTEUND) PERL
(?n) recursieve aanroep voor het opnieuw oplossen van n een groep vastleggen (NIET ONDERSTEUND)
(?+n) recursieve aanroep naar relatieve groep +n (NIET ONDERSTEUND)
(?-n) recursieve aanroep naar relatieve groep -n (NIET ONDERSTEUND)
(?C) PCRE-bijschrift (NIET ONDERSTEUND) PCRE
(?R) recursieve aanroep naar volledige regexp (≡ (?0)) (NIET ONDERSTEUND)
(?&name) recursieve aanroep naar benoemde groep (NIET ONDERSTEUND)
(?P=name) named backreference (NIET ONDERSTEUND)
(?P>name) recursieve aanroep naar benoemde groep (NIET ONDERSTEUND)
(?(cond)true\|false) voorwaardelijke vertakking (NIET ONDERSTEUND)
(?(cond)true) voorwaardelijke vertakking (NIET ONDERSTEUND)
(*ACCEPT) regexps meer op Prolog lijken (NIET ONDERSTEUND)
(*COMMIT) (NIET ONDERSTEUND)
(*F) (NIET ONDERSTEUND)
(*FAIL) (NIET ONDERSTEUND)
(*MARK) (NIET ONDERSTEUND)
(*PRUNE) (NIET ONDERSTEUND)
(*SKIP) (NIET ONDERSTEUND)
(*THEN) (NIET ONDERSTEUND)
(*ANY) newline-conventie instellen (NIET ONDERSTEUND)
(*ANYCRLF) (NIET ONDERSTEUND)
(*CR) (NIET ONDERSTEUND)
(*CRLF) (NIET ONDERSTEUND)
(*LF) (NIET ONDERSTEUND)
(*BSR_ANYCRLF) \R-conventie (NIET ONDERSTEUND) PCRE instellen
(*BSR_UNICODE) (NIET ONDERSTEUND) PCRE