Ten artykuł zawiera omówienie składni wyrażeń regularnych obsługiwanych przez język zapytań Kusto (KQL), czyli składnię biblioteki RE2.
Istnieje wiele operatorów I funkcji języka KQL, które wykonują dopasowywanie ciągów, wybór i wyodrębnianie za pomocą wyrażeń regularnych, takich jak matches regex, parsei replace_regex().
W języku KQL wyrażenia regularne muszą być zakodowane jako literały ciągu i postępować zgodnie z regułami cudzysłowów ciągów. Na przykład wyrażenie \A regularne RE2 jest reprezentowane w języku KQL jako "\\A". Dodatkowy ukośnik odwrotny wskazuje, że drugi ukośnik odwrotny jest częścią wyrażenia \Aregularnego .
Omówienie składni
W poniższej tabeli omówiono składnię wyrażenia regularnego RE2, która służy do zapisywania wyrażeń regularnych w usłudze Kusto.
Składnia, element
opis
Pojedyncze literały
Pojedyncze znaki pasują do siebie, z wyjątkiem metacharacters (* + ? ( ) |), które mają unikatowe znaczenie zgodnie z opisem w poniższych wierszach.
Metacharacters
Aby dopasować metacharakter dosłownie, uniknij go ukośnikami odwrotnymi. Na przykład wyrażenie \+ regularne pasuje do znaku literału plus (+).
Alternatywa
Alternatywne dwa wyrażenia za pomocą | polecenia , aby utworzyć nowe wyrażenie zgodne z jednym z wyrażeń. Na przykład e1 | e2 pasuje do elementu e1 lub e2.
Łączenie
Połącz dwa wyrażenia, aby utworzyć nowe wyrażenie zgodne z pierwszym wyrażeniem, po którym następuje druga. Na przykład e1e2 dopasowania e1 , po których e2następuje .
Powtórzenie
Metacharacters ?, +i * są operatorami powtórzeń. Na przykład e1? dopasuje zero lub jedno wystąpienie e1elementu , e1+ pasuje do co najmniej jednego wystąpienia elementu i e1* pasuje do sekwencji zero lub więcej, prawdopodobnie różnych ciągówe1, które pasują do e1.
Uwaga
Operatory wyrażeń regularnych oceniają w tej kolejności: przemienność (), łączenie (|wyrażenia równoległe) i powtórzenie (?, +, *). Użyj nawiasów, aby kontrolować kolejność oceny.
Wyrażenia jednoznakowe
Przykład
opis
.
dowolny znak, prawdopodobnie włącznie z nowym wierszem (s=true)
negowana klasa znaków Unicode (jednoliterowa nazwa)
\P{Greek}
negowana klasa znaków Unicode
Kompozyty
Przykład
opis
xy
x, a następnie y
x\|y
x lub y (preferuj x)
Powtórzeń
Przykład
opis
x*
zero lub więcej x, preferuj więcej
x+
xco najmniej jeden , preferuj więcej
x?
zero lub jeden x, preferuj jeden
x{n,m}
n lub n+1 lub ... lub mx, preferuj więcej
x{n,}
n lub więcej x, preferuj więcej
x{n}
dokładnie nx
x*?
zero lub więcej x, preferuj mniej
x+?
xco najmniej jeden , preferuj mniej
x??
zero lub jeden x, preferuj zero
x{n,m}?
n lub n+1 lub ... lub mx, preferuj mniej
x{n,}?
n lub więcej x, preferuj mniej
x{n}?
dokładnie nx
x{}
(≡ x*) (NIEOBSŁUGIWANE) VIM
x{-}
(≡ x*?) (NIEOBSŁUGIWANE) VIM
x{-n}
(≡ x{n}?) (NIEOBSŁUGIWANE) VIM
x=
(≡ x?) (NIEOBSŁUGIWANE) VIM
Ograniczenie implementacji: formularze zliczania x{n,m}, x{n,}i x{n} odrzucają formularze, które tworzą minimalną lub maksymalną liczbę powtórzeń powyżej 1000. Nieograniczone powtórzenia nie podlegają temu ograniczeniu.
Przywłaszcze powtórzenia
Przykład
opis
x*+
zero lub więcej x, posiadanie (NIEOBSŁUGIWANE)
x++
xco najmniej jeden , opętany (NIEOBSŁUGIWANY)
x?+
zero lub jeden x, opętny (NIEOBSŁUGIWANY)
x{n,m}+
n lub... lub mx, opętany (NIEOBSŁUGIWANY)
x{n,}+
n lub więcej x, opętanych (NIEOBSŁUGIWANE)
x{n}+
dokładnie nx, posiadanie (NIEOBSŁUGIWANE)
Grupowanie
Przykład
opis
(re)
grupę przechwytywania numerowanego (podpasowanie)
(?P<name>re)
nazwana i numerowana grupa przechwytywania (podmatch)
(?<name>re)
nazwane i numerowane przechwytywanie grupy (podmatch) (NIEOBSŁUGIWANE)
(?'name're)
nazwane i numerowane przechwytywanie grupy (podmatch) (NIEOBSŁUGIWANE)
(?:re)
grupa niepochodząca
(?flags)
ustaw flagi w bieżącej grupie; noncapturing
(?flags:re)
ustawiać flagi podczas ponownego; noncapturing
(?#text)
komentarz (NIEOBSŁUGIWANY)
(?\|x\|y\|z)
resetowanie numerowania gałęzi (NIEOBSŁUGIWANE)
(?>re)
dopasowanie nieobsługiwane ( re NIEOBSŁUGIWANE)
re@>
dopasowanie opętające (NIEOBSŁUGIWANE re ) VIM
%(re)
NIEobsługiwana grupa (NIEOBSŁUGIWANA) VIM
Flagi
Przykład
opis
i
bez uwzględniania wielkości liter (wartość domyślna false)
m
tryb wielowierszowy: ^ i $ dopasuj wiersz początkowy/końcowy oprócz tekstu rozpoczynającego/końcowego (wartość domyślna false)
s
let . match \n (wartość domyślna false)
U
ungreedy: znaczenie zamiany x* i x*?, x+ i x+?itp (wartość domyślna false)
Składnia flagi to xyz (set) lub -xyz (clear) lub xy-z (set xy, clear z).
Aby użyć flag, należy określić parametry i flags w następujący sposób: kind=regexflags=regexFlags.kind
Puste ciągi
Przykład
opis
^
na początku tekstu lub wiersza (m=true)
$
na końcu tekstu (na przykład \z nie\Z) lub wiersza (m=true)
\A
na początku tekstu
\b
w granicy wyrazów ASCII (\w po jednej stronie i \W, \Alub \z na drugiej)
\B
nie w granicach wyrazów ASCII
\g
na początku przeszukiwanego podtekstu (NIEOBSŁUGIWANE) PCRE
\G
na koniec ostatniego dopasowania (NIEOBSŁUGIWANE) PERL
\Z
na końcu tekstu lub przed nowym wierszem na końcu tekstu (NIEOBSŁUGIWANE)
\z
na końcu tekstu
(?=re)
przed dopasowaniem re tekstu (NIEOBSŁUGIWANE)
(?!re)
przed niedopasowaniem re tekstu (NIEOBSŁUGIWANE)
(?<=re)
po dopasowaniu re tekstu (NIEOBSŁUGIWANE)
(?<!re)
po braku dopasowania re tekstu (NIEOBSŁUGIWANE)
re&
przed dopasowaniem re tekstu (NIEOBSŁUGIWANE) VIM
re@=
przed dopasowaniem re tekstu (NIEOBSŁUGIWANE) VIM
re@!
przed niedopasowanie re tekstu (NIEOBSŁUGIWANE) VIM
re@<=
po dopasowaniu re tekstu (NIEOBSŁUGIWANE) VIM
re@<!
po braku dopasowania re tekstu (NIEOBSŁUGIWANE) VIM
\zs
ustawia początek dopasowania (= \K) (NIEOBSŁUGIWANE) VIM
\ze
zestawy zakończenia dopasowania (NIEOBSŁUGIWANE) VIM
\%^
początek pliku (NIEOBSŁUGIWANE) VIM
\%$
koniec pliku (NIEOBSŁUGIWANE) VIM
\%V
na ekranie (NIEOBSŁUGIWANE) VIM
\%#
POŁOŻENIE KURSORA (NIEOBSŁUGIWANE) VIM
\%'m
ZNACZNIK m POŁOŻENIE (NIEOBSŁUGIWANE) VIM
\%23l
w wierszu 23 (NIEOBSŁUGIWANE) VIM
\%23c
w kolumnie 23 (NIEOBSŁUGIWANE) VIM
\%23v
w wirtualnej kolumnie 23 (NIEOBSŁUGIWANE) VIM
Sekwencje ucieczki
Przykład
opis
\a
dzwonek (≡ \007)
\f
źródło danych formularzy (≡ \014)
\t
karta pozioma (≡ \011)
\n
newline (≡ \012)
\r
powrotu karetki (≡ \015)
\v
znak karty pionowej (≡ \013)
\*
literał *, dla dowolnego znaku interpunkcyjnego *
\123
kod ósemkowego znaku (maksymalnie trzy cyfry)
\x7F
Kod znaku szesnastkowego (dokładnie dwie cyfry)
\x{10FFFF}
Kod znaku szesnastkowego
\C
dopasowanie pojedynczego bajtu nawet w trybie UTF-8
\Q...\E
tekst ... literału, nawet jeśli ... ma znaki interpunkcyjne
\1
backreference (NIEOBSŁUGIWANE)
\b
backspace (NIEOBSŁUGIWANE) (użyj polecenia \010)
\cK
znak kontrolki ^K (NIEOBSŁUGIWANE) (użyj \001 itp.)
\e
escape (NIEOBSŁUGIWANE) (użyj \033polecenia )
\g1
backreference (NIEOBSŁUGIWANE)
\g{1}
backreference (NIEOBSŁUGIWANE)
\g{+1}
backreference (NIEOBSŁUGIWANE)
\g{-1}
backreference (NIEOBSŁUGIWANE)
\g{name}
nazwane backreference (NIEOBSŁUGIWANE)
\g<name>
wywołanie podrzędne (NIEOBSŁUGIWANE)
\g'name'
wywołanie podrzędne (NIEOBSŁUGIWANE)
\k<name>
nazwane backreference (NIEOBSŁUGIWANE)
\k'name'
nazwane backreference (NIEOBSŁUGIWANE)
\lX
małe litery X (NIEOBSŁUGIWANE)
\ux
wielkie litery x (NIEOBSŁUGIWANE)
\L...\E
małe litery ( ... NIEOBSŁUGIWANE)
\K
reset początku $0 (NIEOBSŁUGIWANE)
\N{name}
nazwany znak Unicode (NIEOBSŁUGIWANY)
\R
podział wiersza (NIEOBSŁUGIWANY)
\U...\E
tekst ... wielkie litery (NIEOBSŁUGIWANE)
\X
rozszerzona sekwencja Unicode (NIEOBSŁUGIWANA)
\%d123
ZNAK DZIESIĘTNY 123 (NIEOBSŁUGIWANY) VIM
\%xFF
SZESNASTKOWY ZNAK FF (NIEOBSŁUGIWANY) VIM
\%o123
ósemkowe znaki 123 (NIEOBSŁUGIWANE) VIM
\%u1234
ViM znaku Unicode 0x1234 (NIEOBSŁUGIWANE)
\%U12345678
0x12345678 znaków Unicode (NIEOBSŁUGIWANE) VIM
Elementy klasy znaków
Przykład
opis
x
pojedynczy znak
A-Z
zakres znaków (włącznie)
\d
Perl, klasa znaków
[:foo:]
Klasa znaków ASCII foo
\p{Foo}
Unicode, klasa znaków Foo
\pF
Klasa F znaków Unicode (jednoliterowa nazwa)
Nazwane klasy znaków jako elementy klasy znaków
Przykład
opis
[\d]
cyfry (≡ \d)
[^\d]
nie cyfr (≡ \D)
[\D]
nie cyfr (≡ \D)
[^\D]
nie cyfr (≡ \d)
[[:name:]]
nazwana klasa ASCII wewnątrz klasy znaków (≡ [:name:])
[^[:name:]]
nazwana klasa ASCII wewnątrz negowanej klasy znaków (≡ [:^name:])
[\p{Name}]
nazwana właściwość Unicode wewnątrz klasy znaków (≡ \p{Name})
[^\p{Name}]
nazwana właściwość Unicode wewnątrz negowanej klasy znaków (≡ \P{Name})
Dostępne już wkrótce: W 2024 r. będziemy stopniowo wycofywać zgłoszenia z serwisu GitHub jako mechanizm przesyłania opinii na temat zawartości i zastępować go nowym systemem opinii. Aby uzyskać więcej informacji, sprawdź: https://aka.ms/ContentUserFeedback.