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 KQL, które wykonują dopasowywanie ciągów, wybieranie i wyodrębnianie z wyrażeniami regularnymi, takimi jak matches regex, parsei replace_regex().
W języku KQL wyrażenia regularne muszą być kodowane jako literały ciągu i postępować zgodnie z regułami cytowania 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żeń regularnych RE2, która służy do pisania 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.
Metaznaki
Aby dopasować metatyp dosłownie, uniknij go ukośnikami odwrotnymi. Na przykład wyrażenie \+ regularne jest zgodne z znakiem 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 dopasuje wartość e1 lub e2.
Łączenie
Połącz dwa wyrażenia, aby utworzyć nowe wyrażenie zgodne z pierwszym wyrażeniem, po którym następuje drugi. Na przykład e1e2 dopasowania e1 , po których następuje e2.
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 zera lub większej liczby, prawdopodobnie różnych ciągówe1, które pasują do e1.
Uwaga
Operatory wyrażeń regularnych są obliczane w tej kolejności: zmiana (|), łą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 obiekt , preferuj więcej
x?
zero lub jeden x, preferuj jedną
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 obiekt preferuje 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.
Opętne powtórzenia
Przykład
Opis
x*+
zero lub więcej x, posiadania (NIEOBSŁUGIWANE)
x++
xco najmniej jeden , posiadany (NIEOBSŁUGIWANY)
x?+
zero lub jeden x, właściciel (NIEOBSŁUGIWANY)
x{n,m}+
n Lub... lub mx, posiadanie (NIEOBSŁUGIWANE)
x{n,}+
n lub więcej x, właściciel (NIEOBSŁUGIWANE)
x{n}+
dokładnie nx, posiadanie (NIEOBSŁUGIWANE)
Grupowanie
Przykład
Opis
(re)
ponumerowana grupa przechwytywania (podmecz)
(?P<name>re)
nazwany & grupą przechwytywania numerowaną (podpasmowa)
(?<name>re)
nazwany & grupą przechwytywania numerowaną (podpasm) (NIEOBSŁUGIWANA)
(?'name're)
nazwany & grupą przechwytywania numerowaną (podpasm) (NIEOBSŁUGIWANA)
(?:re)
nieuwzwolająca grupa
(?flags)
ustaw flagi w bieżącej grupie; bez hermetyzacji
(?flags:re)
ustaw flagi podczas ponownego; bez hermetyzacji
(?#text)
komentarz (NIEOBSŁUGIWANY)
(?\|x\|y\|z)
resetowanie numerowania gałęzi (NIEOBSŁUGIWANE)
(?>re)
nieobsługiwane dopasowanie ( re NIEOBSŁUGIWANE)
re@>
dopasowanie opętające re (NIEOBSŁUGIWANE) VIM
%(re)
NIEuwzwolająca 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 początku/końca (wartość domyślna false)
s
let . match \n (wartość domyślna false)
U
niesgreedy: zamiana znaczenia 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żywać flag, należy określić kind parametry i flags w następujący sposób: kind=regexflags=regexFlags.
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 granicach 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 tekstem niezgodnym re (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 tekstem, który nie jest zgodny re (NIEOBSŁUGIWANY) 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
\%$
end of file (NOT SUPPORTED) VIM (NIEOBSŁUGIWANE)
\%V
na ekranie (NIEOBSŁUGIWANE) VIM
\%#
POŁOŻENIE KURSORA (NIEOBSŁUGIWANE) VIM
\%'m
znacznik m pozycji (NIEOBSŁUGIWANE) VIM
\%23l
w wierszu 23 (NIEOBSŁUGIWANE) VIM
\%23c
w kolumnie 23 (NIEOBSŁUGIWANE) VIM
\%23v
w kolumnie wirtualnej 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
powrót karetki (≡ \015)
\v
pionowy znak karty (≡ \013)
\*
literał *, dla dowolnego znaku interpunkcyjnego *
\123
kod znaków ósemkowych (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 \010polecenia )
\cK
znak kontroli ^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 tekstowe ... (NIEOBSŁUGIWANE)
\K
resetowanie $0 początku (NIEOBSŁUGIWANE)
\N{name}
nazwany znak Unicode (NIEOBSŁUGIWANY)
\R
podział wiersza (NIEOBSŁUGIWANY)
\U...\E
tekst górnej litery ... (NIEOBSŁUGIWANY)
\X
rozszerzona sekwencja Unicode (NIEOBSŁUGIWANA)
\%d123
Znak dziesiętny 123 (NIEOBSŁUGIWANY) VIM
\%xFF
SZesnastkowy znak FF (NIEOBSŁUGIWANY) VIM
\%o123
ósemkowy znak 123 (NIEOBSŁUGIWANY) VIM
\%u1234
0x1234 znaków Unicode (NIEOBSŁUGIWANE) VIM
\%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}
Klasa znaków Unicode 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.