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)
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})
Kommer snart: Under hela 2024 kommer vi att fasa ut GitHub-problem som feedbackmekanism för innehåll och ersätta det med ett nytt feedbacksystem. Mer information finns i: https://aka.ms/ContentUserFeedback.