Bu makalede, RE2 kitaplığının söz dizimi olan Kusto Sorgu Dili (KQL) tarafından desteklenen normal ifade söz dizimine genel bir bakış sağlanır.
, ve gibi matches regexparsenormal ifadelerle dize eşleştirme, seçim ve ayıklama gerçekleştiren bir dizi KQL işleci ve replace_regex()işlevi vardır.
KQL'de normal ifadelerin dize değişmez değerleri olarak kodlanması ve dize alıntısı kurallarını izlemesi gerekir. Örneğin, RE2 normal ifadesi \A KQL'de olarak "\\A"temsil edilir. Ek ters eğik çizgi, diğer ters eğik çizginin normal ifadesinin \Abir parçası olduğunu gösterir.
Söz dizimine genel bakış
Aşağıdaki tabloda Kusto'da normal ifadeler yazmak için kullanılan RE2 normal ifade söz dizimine genel bakış sağlanır.
Söz dizimi öğesi
Description
Tek değişmez değerler
Meta karakterler (* + ? ) dışında tek karakterler kendi kendine eşleşir ( ) |), aşağıdaki satırlarda açıklandığı gibi benzersiz anlamlara sahiptir.
Meta
Bir meta karakterle tam anlamıyla eşleştirmek için ters eğik çizgilerle kaçış karakteri koyun. Örneğin, normal ifade \+ değişmez değer artı (+) karakteriyle eşleşir.
Değişim
İfadelerden biriyle eşleşen yeni bir ifade oluşturmak için iki ifadeyi ile | değiştirin. Örneğin, e1 | e2 veya e2ile eşleşire1.
Birleştirme
İki ifadeyi birleştirerek ilk ifadeyle eşleşen yeni bir ifade oluşturun ve ardından ikinci ifadeyi ekleyin. Örneğin, e1e2 eşleşmeler e1 ve e2ardından .
Yineleme
Meta karakterler ?, +ve * yineleme işleçleridir. Örneğin, e1? sıfır veya bir yinelenmeyle e1+e1eşleşir, bir veya daha fazla yinelenmeyle e1eşleşir ve e1* ile eşleşen e1sıfır veya daha fazla dize dizisiyle eşleşir.
Not
Normal ifade işleçleri şu sırada değerlendirilir: değişim (|), birleştirme (yan yana ifadeler) ve yineleme (?, +, *). Değerlendirme sırasını denetlemek için parantez kullanın.
Tek karakterli ifadeler
Örnek
Description
.
herhangi bir karakter, büyük olasılıkla yeni satır dahil (s=true)
sıfır veya daha fazla x, daha fazlasını tercih edin
x+
bir veya daha fazla x, daha fazlasını tercih edin
x?
sıfır veya bir x, tercih bir
x{n,m}
n veya n+1 veya ... veya mx, daha fazlasını tercih edin
x{n,}
n veya daha fazla x, daha fazlasını tercih edin
x{n}
Tam nx
x*?
sıfır veya daha fazla x, daha azı tercih edin
x+?
bir veya daha fazla x, daha az tercih edin
x??
sıfır veya bir x, sıfırı tercih edin
x{n,m}?
n veya n+1 veya ... veya mxdaha az tercih edin
x{n,}?
n veya daha fazla x, daha azı tercih edin
x{n}?
Tam nx
x{}
(≡ x*) (DESTEKLENMEZ) VIM
x{-}
(≡ x*?) (DESTEKLENMEZ) VIM
x{-n}
(≡ x{n}?) (DESTEKLENMEZ) VIM
x=
(≡ x?) (DESTEKLENMEZ) VIM
Uygulama kısıtlaması: Sayım formları x{n,m}, x{n,}ve x{n} 1000'in üzerinde en az veya en fazla yineleme sayısı oluşturan formları reddeder. Sınırsız yinelemeler bu kısıtlamaya tabi değildir.
İyelik tekrarları
Örnek
Description
x*+
sıfır veya daha fazla x, sahiplik (DESTEKLENMİYOR)
x++
bir veya daha fazla x, sahiplik (DESTEKLENMİYOR)
x?+
sıfır veya bir x, sahiplik (DESTEKLENMİYOR)
x{n,m}+
n Veya... veya mx, iyelik (DESTEKLENMİYOR)
x{n,}+
n veya daha fazla x, iyelik (DESTEKLENMİYOR)
x{n}+
tam olarak nx, iyelik (DESTEKLENMİYOR)
Gruplandırma
Örnek
Description
(re)
numaralandırılmış yakalama grubu (alt eşleşme)
(?P<name>re)
adlandırılmış & numaralı yakalama grubu (alt eşleşme)
(?<name>re)
adlandırılmış & numaralı yakalama grubu (alt eşleşme) (DESTEKLENMİYOR)
(?'name're)
adlandırılmış & numaralı yakalama grubu (alt eşleşme) (DESTEKLENMİYOR)
(?:re)
kapsüllenmeyen grup
(?flags)
geçerli grup içinde bayrak ayarlama; kapsülleme değil
(?flags:re)
re sırasında bayrakları ayarlama; kapsülleme değil
(?#text)
açıklama (DESTEKLENMEDİ)
(?\|x\|y\|z)
dal numaralandırma sıfırlama (DESTEKLENMEDİ)
(?>re)
sahiplik eşleşmesi re (DESTEKLENMİYOR)
re@>
(DESTEKLENMİYOR) VIM'in re iyelik eşleştirmesi
%(re)
kapsüllenmeyen grup (DESTEKLENMEDİ) VIM
Bayraklar
Örnek
Description
i
büyük/küçük harfe duyarlı değil (varsayılan yanlış)
m
çok satırlı mod: ^ ve $ başlangıç/bitiş metnine ek olarak başlangıç/bitiş satırını eşleştir (varsayılan yanlış)
s
let . match \n (varsayılan false)
U
ungreedy: ve , x+ ve x*?x+?vb.'nin x* anlamını değiştirme (varsayılan yanlış)
Bayrak söz dizimi xyz (set) veya -xyz (clear) veya xy-z (xy, clear z) şeklindedir.
Bayrakları kullanmak için ve flags parametrelerini şu şekilde belirtmeniz kind gerekir: kind=regexflags=regexFlags.
Boş dizeler
Örnek
Description
^
metin veya satırın başında (m=true)
$
metnin sonunda (değil\Z gibi\z) veya satırda (m=true)
\A
metnin başında
\b
ASCII sözcük sınırında (\w bir tarafta ve \W, \Aveya \z diğer tarafta)
\B
ASCII sözcük sınırında değil
\g
aranmakta olan alt metin başlangıcında (DESTEKLENMİYOR) PCRE
\G
son eşleşmenin sonunda (DESTEKLENMEDİ) PERL
\Z
metnin sonunda veya metnin sonundaki yeni satırdan önce (DESTEKLENMEDİ)
\z
metnin sonunda
(?=re)
metin eşleştirmeden re önce (DESTEKLENMEDİ)
(?!re)
metin eşleşmeden re önce (DESTEKLENMEDİ)
(?<=re)
metin eşleştirmeden re sonra (DESTEKLENMEDİ)
(?<!re)
metin eşleşmedikten re sonra (DESTEKLENMEDİ)
re&
metin eşleştirmeden re önce (DESTEKLENMEDİ) VIM
re@=
metin eşleştirmeden re önce (DESTEKLENMEDİ) VIM
re@!
metin eşleşmeden re önce (DESTEKLENMEDİ) VIM
re@<=
metin eşleştirmeden re sonra (DESTEKLENMEDİ) VIM
re@<!
metin eşleşmedikten re sonra (DESTEKLENMEDİ) VIM
\zs
eşleşme başlangıcını ayarlar (= \K) (DESTEKLENMEDİ) VIM
\ze
eşleşme sonunu ayarlar (DESTEKLENMEDİ) VIM
\%^
dosyanın başlangıcı (DESTEKLENMEDİ) VIM
\%$
dosya sonu (DESTEKLENMEDİ) VIM
\%V
ekranda (DESTEKLENMEDİ) VIM
\%#
imleç konumu (DESTEKLENMEDİ) VIM
\%'m
işaret m konumu (DESTEKLENMEDİ) VIM
\%23l
23. satırda (DESTEKLENMEDİ) VIM
\%23c
23. sütunda (DESTEKLENMEDİ) VIM
\%23v
23. sanal sütunda (DESTEKLENMEDİ) VIM
Çıkış sıraları
Örnek
Description
\a
bell (≡ \007)
\f
form akışı (≡ \014)
\t
yatay sekme (≡ \011)
\n
newline (≡ \012)
\r
satır başı (≡ \015)
\v
dikey sekme karakteri (≡ \013)
\*
*herhangi bir noktalama karakteri için değişmez değer ,*
\123
sekizli karakter kodu (en fazla üç basamak)
\x7F
onaltılık karakter kodu (tam olarak iki basamak)
\x{10FFFF}
onaltılık karakter kodu
\C
UTF-8 modunda bile tek bir baytla eşleştirme
\Q...\E
... noktalama işaretleri olsa ... bile değişmez metin
\1
geri başvuru (DESTEKLENMEDİ)
\b
geri al (DESTEKLENMEDİ) (kullanın \010)
\cK
denetim karakteri ^K (DESTEKLENMEDİ) (kullanma \001 vb.)
\e
escape (DESTEKLENMEDİ) (kullan \033)
\g1
geri başvuru (DESTEKLENMEDİ)
\g{1}
geri başvuru (DESTEKLENMEDİ)
\g{+1}
geri başvuru (DESTEKLENMEDİ)
\g{-1}
geri başvuru (DESTEKLENMEDİ)
\g{name}
adlandırılmış geri başvuru (DESTEKLENMEDİ)
\g<name>
alt yordam çağrısı (DESTEKLENMEDİ)
\g'name'
alt yordam çağrısı (DESTEKLENMEDİ)
\k<name>
adlandırılmış geri başvuru (DESTEKLENMEDİ)
\k'name'
adlandırılmış geri başvuru (DESTEKLENMEDİ)
\lX
küçük harf X (DESTEKLENMEDİ)
\ux
büyük harf x (DESTEKLENMEDİ)
\L...\E
küçük harfli metin ... (DESTEKLENMEDİ)
\K
sıfırlama başlangıcı $0 (DESTEKLENMEDİ)
\N{name}
adlı Unicode karakteri (DESTEKLENMEDİ)
\R
satır sonu (DESTEKLENMEDİ)
\U...\E
büyük harf metin ... (DESTEKLENMEDİ)
\X
genişletilmiş Unicode dizisi (DESTEKLENMEDİ)
\%d123
ondalık karakter 123 (DESTEKLENMEDİ) VIM
\%xFF
onaltılık karakter FF (DESTEKLENMEDİ) VIM
\%o123
sekizli karakter 123 (DESTEKLENMEDİ) VIM
\%u1234
Unicode karakter 0x1234 (DESTEKLENMEDİ) VIM
\%U12345678
Unicode karakter 0x12345678 (DESTEKLENMEDİ) VIM
Karakter sınıfı öğeleri
Örnek
Description
x
tek karakter
A-Z
karakter aralığı (dahil)
\d
Perl karakter sınıfı
[:foo:]
ASCII karakter sınıfı foo
\p{Foo}
Unicode karakter sınıfı Foo
\pF
Unicode karakter sınıfı F (tek harfli ad)
Karakter sınıflarını karakter sınıfı öğeleri olarak adlandır
Örnek
Description
[\d]
rakamlar (≡ \d)
[^\d]
basamak değil (≡ \D)
[\D]
basamak değil (≡ \D)
[^\D]
basamak değil (≡ \d)
[[:name:]]
karakter sınıfı içinde adlandırılmış ASCII sınıfı (≡ [:name:])
[^[:name:]]
olumsuz karakter sınıfı içinde adlandırılmış ASCII sınıfı (≡ [:^name:])
[\p{Name}]
karakter sınıfı içindeki adlandırılmış Unicode özelliği (≡ \p{Name})
[^\p{Name}]
olumsuz karakter sınıfı içindeki adlandırılmış Unicode özelliği (≡ \P{Name})
Perl karakter sınıfları
Yalnızca ASCII
Örnek
Description
\d
rakamlar (≡ [0-9])
\D
basamak değil (≡ [^0-9])
\s
boşluk (≡ [\t\n\f\r ])
\S
boşluk değil (≡ [^\t\n\f\r ])
\w
sözcük karakterleri (≡ [0-9A-Za-z_])
\W
sözcük karakterleri değil (≡ [^0-9A-Za-z_])
\h
yatay boşluk (DESTEKLENMEDİ)
\H
yatay boşluk değil (DESTEKLENMEDİ)
\v
dikey boşluk (DESTEKLENMEDİ)
\V
dikey boşluk değil (DESTEKLENMEDİ)
ASCII karakter sınıfları
Örnek
Description
[[:alnum:]]
alfasayısal (≡ [0-9A-Za-z])
[[:alpha:]]
alfabetik (≡ [A-Za-z])
[[:ascii:]]
ASCII (≡ [\x00-\x7F])
[[:blank:]]
blank (≡ [\t ])
[[:cntrl:]]
control (≡ [\x00-\x1F\x7F])
[[:digit:]]
rakamlar (≡ [0-9])
[[:graph:]]
grafik (≡ [!-~] ≡ [A-Za-z0-9!"#$%&'()*+,\-./:;<=>?@[\\\]^_{ |}~])
[[:lower:]]
küçük harf (≡ [a-z])
[[:print:]]
yazdırılabilir (≡ [ -~] ≡ [ [:graph:]])
[[:punct:]]
noktalama işareti (≡ [!-/:-@[-{-~])
[[:space:]]
boşluk (≡ [\t\n\v\f\r ])
[[:upper:]]
büyük harf (≡ [A-Z])
[[:word:]]
sözcük karakterleri (≡ [0-9A-Za-z_])
[[:xdigit:]]
onaltılık basamak (≡ [0-9A-Fa-f])
Unicode karakter sınıfı adları
Genel
Örnek
Description
C
other
Cc
denetimi
Cf
biçim
Cn
atanmamış kod noktaları (DESTEKLENMEDİ)
Co
özel kullanım
Cs
Vekil
L
Mektup
LC
büyük/küçük harf (DESTEKLENMEDİ)
L&
büyük/küçük harf (DESTEKLENMEDİ)
Ll
küçük harf
Lm
değiştirici harf
Lo
diğer harf
Lt
titlecase letter
Lu
büyük harf
M
işaretle
Mc
aralık işareti
Me
kapsayan işaret
Mn
nonspacing işareti
N
sayı
Nd
ondalık sayı
Nl
harf numarası
No
diğer numara
P
noktalama işareti
Pc
bağlayıcı noktalama işaretleri
Pd
tire noktalama işaretleri
Pe
noktalama işaretlerini kapatma
Pf
son noktalama işareti
Pi
ilk noktalama işaretleri
Po
diğer noktalama işaretleri
Ps
açık noktalama işaretleri
S
simgesi
Sc
para birimi simgesi
Sk
değiştirici simgesi
Sm
matematik simgesi
So
diğer simge
Z
Ayırıcı
Zl
çizgi ayırıcısı
Zp
paragraf ayırıcısı
Zs
boşluk ayırıcısı
Betikler
Betikler
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 karakter sınıfları
Örnek
Description
\i
tanımlayıcı karakteri (DESTEKLENMEDİ) VIM
\I
\i basamaklar dışında (DESTEKLENMEDİ) VIM
\k
anahtar sözcük karakteri (DESTEKLENMEDİ) VIM
\K
\k basamaklar dışında (DESTEKLENMEDİ) VIM
\f
dosya adı karakteri (DESTEKLENMEDİ) VIM
\F
\f basamaklar dışında (DESTEKLENMEDİ) VIM
\p
yazdırılabilir karakter (DESTEKLENMİYOR) VIM
\P
\p basamaklar dışında (DESTEKLENMEDİ) VIM
\s
boşluk karakteri (≡ [ \t]) (DESTEKLENMEDİ) VIM
\S
boşluk olmayan karakter (≡ [^ \t]) (DESTEKLENMEDİ) VIM
\d
rakamlar (≡ [0-9]) VIM
\D
VIM değil \d
\x
onaltılık basamaklar (≡ [0-9A-Fa-f]) (DESTEKLENMEDİ) VIM
\X
not \x (NOT SUPPORTED) VIM
\o
sekizli basamaklar (≡ [0-7]) (DESTEKLENMEDİ) VIM
\O
not \o (NOT SUPPORTED) VIM
\w
sözcük karakteri VIM
\W
VIM değil \w
\h
sözcük karakteri baş karakteri (DESTEKLENMEDİ) VIM
\H
not \h (NOT SUPPORTED) VIM
\a
alfabetik (DESTEKLENMEDİ) VIM
\A
not \a (NOT SUPPORTED) VIM
\l
küçük harf (DESTEKLENMEDİ) VIM
\L
küçük harf değil (DESTEKLENMEDİ) VIM
\u
büyük harf (DESTEKLENMEDİ) VIM
\U
büyük harf değil (DESTEKLENMEDİ) VIM
\_x
\x plus newline, for any x (NOT SUPPORTED) VIM
\c
ignore case (NOT SUPPORTED) VIM
\C
büyük/küçük harf eşleştirme (DESTEKLENMEDİ) VIM
\m
magic (DESTEKLENMEDİ) VIM
\M
nomagic (DESTEKLENMEDİ) VIM
\v
verymagic (DESTEKLENMEDİ) VIM
\V
verynomagic (DESTEKLENMEDİ) VIM
\Z
Unicode birleştirme karakterlerindeki farkları yoksayma (DESTEKLENMEDİ) VIM
Sihirli
Örnek
Description
(?{code})
rastgele Perl kodu (DESTEKLENMEDİ) PERL
(??{code})
ertelenen rastgele Perl kodu (DESTEKLENMEDİ) PERL
(?n)
regexp yakalama grubuna n özyinelemeli çağrı (DESTEKLENMEDİ)
(?+n)
göreli gruba +n özyinelemeli çağrı (DESTEKLENMEDİ)
(?-n)
göreli gruba -n özyinelemeli çağrı (DESTEKLENMEDİ)
(?C)
PCRE açıklama balonu (DESTEKLENMEZ) PCRE
(?R)
tüm regexp'e özyinelemeli çağrı (≡ (?0)) (DESTEKLENMEDİ)
(?&name)
adlandırılmış gruba özyinelemeli çağrı (DESTEKLENMEDİ)
(?P=name)
adlandırılmış backreference (DESTEKLENMEDİ)
(?P>name)
adlandırılmış gruba özyinelemeli çağrı (DESTEKLENMEDİ)
(?(cond)true\|false)
koşullu dal (DESTEKLENMEDİ)
(?(cond)true)
koşullu dal (DESTEKLENMEDİ)
(*ACCEPT)
normal ifadeleri Prolog'a daha çok benzer hale getirin (DESTEKLENMEDİ)
Çok yakında: 2024 boyunca, içerik için geri bildirim mekanizması olarak GitHub Sorunları’nı kullanımdan kaldıracak ve yeni bir geri bildirim sistemiyle değiştireceğiz. Daha fazla bilgi için bkz. https://aka.ms/ContentUserFeedback.