Dela via


RE2-syntax

Den här artikeln innehåller en översikt över syntaxen för reguljära uttryck som stöds av Kusto-frågespråk (KQL), vilket är syntaxen för RE2-biblioteket.

Det finns ett antal KQL-operatorer och funktioner som utför strängmatchning, val och extrahering med reguljära uttryck, till exempel matches regex, parseoch replace_regex().

I KQL måste reguljära uttryck kodas som strängliteraler och följa reglerna för strängcitering. Till exempel representeras det reguljära RE2-uttrycket \A i KQL som "\\A". Det extra omvänt snedstrecket anger att det andra omvänt snedstrecket är en del av det reguljära uttrycket \A.

Syntaxöversikt

I följande tabell beskrivs syntaxen för re2-reguljära uttryck, som används för att skriva reguljära uttryck i Kusto.

Syntaxelement Description
Enkla literaler Enskilda tecken matchar sig själva, förutom metakarakterare (* + ? ( ) |), som har unika betydelser enligt beskrivningen i följande rader.
Metatecken Om du vill matcha ett metatecken bokstavligen kan du undvika det med omvänt snedstreck. Det reguljära uttrycket \+ matchar till exempel ett literalt plustecken (+).
Växlingen Växla två uttryck med | för att skapa ett nytt uttryck som matchar något av uttrycken. Matchar till exempel e1 | e2 antingen e1 eller e2.
Sammanlänkning Sammanfoga två uttryck för att skapa ett nytt uttryck som matchar det första uttrycket följt av det andra. Till exempel e1e2 matchar e1 följt av e2.
Upprepning Metacharacters ?, +och * är upprepningsoperatorer. Matchar till exempel e1? noll eller en förekomst av e1, e1+ matchar en eller flera förekomster av e1och e1* matchar en sekvens med noll eller fler, eventuellt olika, strängar som matchar e1.

Anteckning

Operatorer för reguljära uttryck utvärderar i den här ordningen: alternation (|), sammanfogning (sida vid sida-uttryck) och upprepning (?, +, *). Använd parenteser för att styra utvärderingsordningen.

Uttryck med en tecken

Exempel Description
. alla tecken, eventuellt inklusive newline (s=true)
[xyz] teckenklass
[^xyz] negerad teckenklass
\d Perl-teckenklass
\D negerad perl-teckenklass
[[:alpha:]] ASCII-teckenklass
[[:^alpha:]] negerad ASCII-teckenklass
\pN Unicode-teckenklass (en bokstavsnamn)
\p{Greek} Unicode-teckenklass
\PN negerad Unicode-teckenklass (ett bokstavsnamn)
\P{Greek} negerad Unicode-teckenklass

Sammansättningar

Exempel Description
xy x följt av y
x\|y x eller y (föredrar x)

Upprepningar

Exempel Description
x* noll eller mer x, föredrar mer
x+ en eller flera x, föredrar mer
x? noll eller ett x, föredrar en
x{n,m} n eller n+1 eller ... eller mx, föredrar mer
x{n,} n eller mer x, föredrar mer
x{n} Exakt nx
x*? noll eller mer x, föredrar färre
x+? en eller flera x, föredrar färre
x?? noll eller ett x, föredrar noll
x{n,m}? n eller n+1 eller ... eller mx, föredrar färre
x{n,}? n eller mer x, föredrar färre
x{n}? Exakt nx
x{} (≡ x*) (STÖDS INTE) VIM
x{-} (≡ x*?) (STÖDS INTE) VIM
x{-n} (≡ x{n}?) (STÖDS INTE) VIM
x= (≡ x?) (STÖDS INTE) VIM

Implementeringsbegränsning: Inventeringsformulären x{n,m}, x{n,}och x{n} avvisar formulär som skapar ett minsta eller högsta antal upprepningar över 1 000. Obegränsade upprepningar omfattas inte av den här begränsningen.

Possessiva upprepningar

Exempel Description
x*+ zero or more x, possessive (STÖDS INTE)
x++ en eller flera x, possessiv (STÖDS INTE)
x?+ noll eller en x, possessiv (STÖDS INTE)
x{n,m}+ n Eller... eller mx, possessiv (STÖDS INTE)
x{n,}+ n eller mer x, possessiv (STÖDS INTE)
x{n}+ exakt nx, possessiv (STÖDS INTE)

Gruppering

Exempel Description
(re) numrerad insamlingsgrupp (undermatchning)
(?P<name>re) med namnet & numrerad insamlingsgrupp (undermatchning)
(?<name>re) med namnet & numrerad insamlingsgrupp (delmatchning) (STÖDS INTE)
(?'name're) med namnet & numrerad insamlingsgrupp (delmatchning) (STÖDS INTE)
(?:re) icke-kapslingsgrupp
(?flags) ange flaggor inom den aktuella gruppen. inkapsling
(?flags:re) ange flaggor under re; inkapsling
(?#text) kommentar (STÖDS INTE)
(?\|x\|y\|z) återställning av grennumrering (STÖDS INTE)
(?>re) possessive match av re (STÖDS INTE)
re@> possessive match av re (STÖDS INTE) VIM
%(re) icke-kapslingsgrupp (STÖDS INTE) VIM

Flaggor

Exempel Description
i skiftlägesokänsligt (standard falskt)
m flerradsläge: ^ och $ matcha start-/slutlinje utöver start-/sluttext (standard falskt)
s let . match \n (standard falskt)
U ungreedy: växla innebörden av x* och x*?, x+ och x+?osv (standard falskt)

Flaggsyntaxen är xyz (set) eller -xyz (clear) eller xy-z (set xy, clear z).

Om du vill använda flaggor måste du ange parametrarna kind och flags enligt följande: kind=regexflags=regexFlags.

Tomma strängar

Exempel Description
^ i början av text eller rad (m=sant)
$ i slutet av texten (som \z inte\Z) eller rad (m=sant)
\A i början av texten
\b vid ASCII-ordgräns (\w på ena sidan och \W, \Aeller \z på den andra)
\B inte vid ASCII-ordgräns
\g i början av undertexten genomsöks (STÖDS INTE) PCRE
\G i slutet av den senaste matchen (STÖDS INTE) PERL
\Z i slutet av texten eller före ny rad i slutet av texten (STÖDS INTE)
\z i slutet av texten
(?=re) före textmatchning re (STÖDS INTE)
(?!re) före text som inte matchar re (STÖDS INTE)
(?<=re) efter textmatchning re (STÖDS INTE)
(?<!re) efter text som inte matchar re (STÖDS INTE)
re& före textmatchning re (STÖDS INTE) VIM
re@= före textmatchning re (STÖDS INTE) VIM
re@! före text som inte matchar re (STÖDS INTE) VIM
re@<= efter textmatchning re (STÖDS INTE) VIM
re@<! efter text som inte matchar re (STÖDS INTE) VIM
\zs uppsättningar matchningsstart (= \K) (STÖDS INTE) VIM
\ze uppsättningar slutet av matchning (STÖDS INTE) VIM
\%^ början av filen (STÖDS INTE) VIM
\%$ slutet av filen (STÖDS INTE) VIM
\%V på skärmen (STÖDS INTE) VIM
\%# markörens position (STÖDS INTE) VIM
\%'m mark m position (STÖDS INTE) VIM
\%23l i rad 23 (STÖDS INTE) VIM
\%23c i kolumn 23 (STÖDS INTE) VIM
\%23v i virtuell kolumn 23 (STÖDS INTE) VIM

Escape-sekvenser

Exempel Description
\a bell (≡ \007)
\f formulärfeed (≡ \014)
\t vågrät flik (≡ \011)
\n newline (≡ \012)
\r vagnretur (≡ \015)
\v lodrätt fliktecken (≡ \013)
\* literal *, för eventuella skiljetecken *
\123 oktal teckenkod (upp till tre siffror)
\x7F hex-teckenkod (exakt två siffror)
\x{10FFFF} hexteckenkod
\C matcha en enda byte även i UTF-8-läge
\Q...\E literaltext ... även om ... den har skiljetecken
\1 backreference (STÖDS INTE)
\b backspace (STÖDS INTE) (använd \010)
\cK kontrolltecken ^K (STÖDS INTE) (använd \001 osv.)
\e escape (STÖDS INTE) (använd \033)
\g1 backreference (STÖDS INTE)
\g{1} backreference (STÖDS INTE)
\g{+1} backreference (STÖDS INTE)
\g{-1} backreference (STÖDS INTE)
\g{name} namngiven backreference (STÖDS INTE)
\g<name> subrutinanrop (STÖDS INTE)
\g'name' subrutinanrop (STÖDS INTE)
\k<name> namngiven backreference (STÖDS INTE)
\k'name' namngiven backreference (STÖDS INTE)
\lX gemener X (STÖDS INTE)
\ux versaler x (STÖDS INTE)
\L...\E gemener ( ... STÖDS INTE)
\K återställ början av $0 (STÖDS INTE)
\N{name} namn på Unicode-tecken (STÖDS INTE)
\R radbrytning (STÖDS INTE)
\U...\E versaler ( ... STÖDS INTE)
\X utökad Unicode-sekvens (STÖDS INTE)
\%d123 decimaltecken 123 (STÖDS INTE) VIM
\%xFF hex-tecken FF (STÖDS INTE) VIM
\%o123 oktalt tecken 123 (STÖDS INTE) VIM
\%u1234 Unicode-tecken 0x1234 (STÖDS INTE) VIM
\%U12345678 Unicode-tecken 0x12345678 (STÖDS INTE) VIM

Teckenklasselement

Exempel Description
x enstaka tecken
A-Z teckenintervall (inklusive)
\d Perl-teckenklass
[:foo:] ASCII-teckenklass foo
\p{Foo} Unicode-teckenklass Foo
\pF Unicode-teckenklass F (en bokstavsnamn)

Namngivna teckenklasser som teckenklasselement

Exempel Description
[\d] siffror (≡ \d)
[^\d] inte siffror (≡ \D)
[\D] inte siffror (≡ \D)
[^\D] inte siffror (≡ \d)
[[:name:]] namngiven ASCII-klass i teckenklassen (≡ [:name:])
[^[:name:]] namngiven ASCII-klass i negerad teckenklass (≡ [:^name:])
[\p{Name}] namngiven Unicode-egenskap i teckenklassen (≡ \p{Name})
[^\p{Name}] namngiven Unicode-egenskap i negerad teckenklass (≡ \P{Name})

Perl-teckenklasser

Endast ASCII

Exempel Description
\d siffror (≡ [0-9])
\D inte siffror (≡ [^0-9])
\s tomt utrymme (≡ [\t\n\f\r ])
\S inte tomt utrymme (≡ [^\t\n\f\r ])
\w ordtecken (≡ [0-9A-Za-z_])
\W inte ordtecken (≡ [^0-9A-Za-z_])
\h vågrätt utrymme (STÖDS INTE)
\H inte vågrätt utrymme (STÖDS INTE)
\v lodrätt blanksteg (STÖDS INTE)
\V inte lodrätt utrymme (STÖDS INTE)

ASCII-teckenklasser

Exempel Description
[[:alnum:]] alfanumeriskt (≡ [0-9A-Za-z])
[[:alpha:]] alfabetisk (≡ [A-Za-z])
[[:ascii:]] ASCII (≡ [\x00-\x7F])
[[:blank:]] tom (≡ [\t ])
[[:cntrl:]] kontroll (≡ [\x00-\x1F\x7F])
[[:digit:]] siffror (≡ [0-9])
[[:graph:]] grafisk (≡ [!-~][A-Za-z0-9!"#$%&'()*+,\-./:;<=>?@[\\\]^_{ |}~])
[[:lower:]] gemen (≡ [a-z])
[[:print:]] utskrivbar (≡ [ -~][ [:graph:]])
[[:punct:]] skiljetecken (≡ [!-/:-@[-{-~])
[[:space:]] tomt utrymme (≡ [\t\n\v\f\r ])
[[:upper:]] versaler (≡ [A-Z])
[[:word:]] ordtecken (≡ [0-9A-Za-z_])
[[:xdigit:]] hex-siffra (≡ [0-9A-Fa-f])

Unicode-teckenklassnamn

Allmänt

Exempel Description
C other
Cc control
Cf format
Cn otilldelade kodpunkter (STÖDS INTE)
Co privat användning
Cs Surrogat
L Brev
LC gemener (STÖDS INTE)
L& gemener (STÖDS INTE)
Ll gemener
Lm modifierarbrev
Lo annan bokstav
Lt titlecase letter
Lu versaler
M Markera
Mc avståndsmarkering
Me omslutande markering
Mn icke-avståndsmarkering
N antal
Nd Decimaltal
Nl bokstavsnummer
No annat nummer
P Skiljetecken
Pc interpunktion för anslutningsapp
Pd bindestreckspunktion
Pe stäng skiljetecken
Pf slutlig interpunktion
Pi inledande skiljetecken
Po andra skiljetecken
Ps öppna skiljetecken
S Symbol
Sc valutasymbol
Sk modifierarsymbol
Sm matematisk symbol
So annan symbol
Z Avgränsare
Zl radavgränsare
Zp styckeavgränsare
Zs blankstegsavgränsare

Skript

Skript
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-teckenklasser

Exempel Description
\i identifierartecken (STÖDS INTE) VIM
\I \i utom siffror (STÖDS INTE) VIM
\k nyckelordstecken (STÖDS INTE) VIM
\K \k utom siffror (STÖDS INTE) VIM
\f filnamnstecken (STÖDS INTE) VIM
\F \f utom siffror (STÖDS INTE) VIM
\p utskrivbart tecken (STÖDS INTE) VIM
\P \p utom siffror (STÖDS INTE) VIM
\s blankstegstecken (≡ [ \t]) (STÖDS INTE) VIM
\S blankstegstecken (≡ [^ \t]) (STÖDS INTE) VIM
\d siffror (≡ [0-9]) VIM
\D inte \d VIM
\x hex-siffror (≡ [0-9A-Fa-f]) (STÖDS INTE) VIM
\X inte \x (STÖDS INTE) VIM
\o oktala siffror (≡ [0-7]) (STÖDS INTE) VIM
\O inte \o (STÖDS INTE) VIM
\w ordtecken VIM
\W inte \w VIM
\h head of word character (STÖDS INTE) VIM
\H inte \h (STÖDS INTE) VIM
\a alfabetisk (STÖDS INTE) VIM
\A inte \a (STÖDS INTE) VIM
\l gemener (STÖDS INTE) VIM
\L inte gemener (STÖDS INTE) VIM
\u versaler (STÖDS INTE) VIM
\U inte versaler (STÖDS INTE) VIM
\_x \x plus newline, för alla x (STÖDS INTE) VIM
\c ignore case (STÖDS INTE) VIM
\C matchningsfall (STÖDS INTE) VIM
\m magic (STÖDS INTE) VIM
\M nomagic (STÖDS INTE) VIM
\v mycketmagisk (STÖDS INTE) VIM
\V verynomagic (STÖDS INTE) VIM
\Z ignorera skillnader i Unicode-kombination av tecken (STÖDS INTE) VIM

Magi

Exempel Description
(?{code}) godtycklig perl-kod (STÖDS INTE) PERL
(??{code}) uppskjuten godtycklig Perl-kod (STÖDS INTE) PERL
(?n) rekursivt anrop till regexp avbildningsgrupp n (STÖDS INTE)
(?+n) rekursivt anrop till relativ grupp +n (STÖDS INTE)
(?-n) rekursivt anrop till relativ grupp -n (STÖDS INTE)
(?C) PCRE-pratbubblan (STÖDS INTE) PCRE
(?R) rekursivt anrop till hela regexp (≡ (?0)) (STÖDS INTE)
(?&name) rekursivt anrop till namngiven grupp (STÖDS INTE)
(?P=name) namngiven backreference (STÖDS INTE)
(?P>name) rekursivt anrop till namngiven grupp (STÖDS INTE)
(?(cond)true\|false) villkorsstyrd gren (STÖDS INTE)
(?(cond)true) villkorsstyrd gren (STÖDS INTE)
(*ACCEPT) gör regexps mer som Prolog (STÖDS INTE)
(*COMMIT) (STÖDS INTE)
(*F) (STÖDS INTE)
(*FAIL) (STÖDS INTE)
(*MARK) (STÖDS INTE)
(*PRUNE) (STÖDS INTE)
(*SKIP) (STÖDS INTE)
(*THEN) (STÖDS INTE)
(*ANY) set newline convention (STÖDS INTE)
(*ANYCRLF) (STÖDS INTE)
(*CR) (STÖDS INTE)
(*CRLF) (STÖDS INTE)
(*LF) (STÖDS INTE)
(*BSR_ANYCRLF) set \R convention (STÖDS INTE) PCRE
(*BSR_UNICODE) (STÖDS INTE) PCRE