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ılama kurallarına uyması 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özdizimi öğesi
Açıklama
Tek değişmez değerler
Meta karakterler (* + ? hariç) tek karakterler kendi kendilerine eşleşir ( ) |), aşağıdaki satırlarda açıklandığı gibi benzersiz anlamlara sahiptir.
Meta karakter oluşturucular
Bir meta karakterle tam anlamıyla eşleştirmek için ters eğik çizgilerle kaçış. Ö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.
Bitiştirme
İlk ifadeyle ve ardından ikinci ifadeyle eşleşen yeni bir ifade oluşturmak için iki ifadeyi birleştirir. Örneğin, e1e2 eşleşmeler e1 ve e2ardından .
Repetition (Tekrar Sayısı)
Meta karakter , ?+ve * tekrar 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
Açıklama
.
herhangi bir karakter, büyük olasılıkla yeni satır (s=true) dahil
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 mxdaha 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*) (DESTEKLENMEDİ) VIM
x{-}
(≡ x*?) (DESTEKLENMEDİ) VIM
x{-n}
(≡ x{n}?) (DESTEKLENMEDİ) VIM
x=
(≡ x?) (DESTEKLENMEDİ) VIM
Uygulama kısıtlaması: En az veya en fazla 1000 yineleme sayısı oluşturan x{n,m}, x{n,} ve x{n} ret formları. Sınırsız yinelemeler bu kısıtlamaya tabi değildir.
İyelik tekrarları
Örnek
Açıklama
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, sahiplik (DESTEKLENMİYOR)
x{n,}+
n veya daha fazla x, sahiplik (DESTEKLENMİYOR)
x{n}+
tam olarak nx, sahiplik (DESTEKLENMİYOR)
Gruplama
Örnek
Açıklama
(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)
özetsiz grup
(?flags)
geçerli grup içinde bayrakları ayarlama; kapsülleme dışı
(?flags:re)
re sırasında bayraklar ayarlayın; kapsülleme dışı
(?#text)
açıklama (DESTEKLENMEDİ)
(?\|x\|y\|z)
dal numaralandırma sıfırlama (DESTEKLENMEDİ)
(?>re)
sahiplik eşleşmesi re (DESTEKLENMİYOR)
re@>
iyelik eşleşmesi re (DESTEKLENMİYOR) VIM
%(re)
kapsülleme dışı grup (DESTEKLENMEDİ) VIM
Bayraklar
Örnek
Açıklama
i
büyük/küçük harfe duyarsız (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 false)
s
let . match \n (varsayılan false)
U
ungreedy: ve x*?, x+ ve x+?vb. anlamlarını x* değiştirme (varsayılan yanlış)
Bayrak söz dizimi xyz (set) veya -xyz (clear) veya xy-z (set xy, clear z) şeklindedir.
Bayrakları kullanmak için ve parametrelerini aşağıdaki gibi belirtmeniz kind gerekir: kind= regex regexFlagsflags=.flags
Boş dizeler
Örnek
Açıklama
^
metin veya satırın başında (m=true)
$
metnin sonunda (değil\Z gibi\z) veya satır (m=true)
\A
metnin başında
\b
ASCII sözcük sınırında (\w bir tarafta ve \W, \Aveya \z diğer tarafında)
\B
ASCII sözcük sınırında değil
\g
aranmakta olan alt metin başı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
sanal sütunda 23 (DESTEKLENMEDİ) VIM
Çıkış sıraları
Örnek
Açıklama
\a
zil (≡ \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 çok üç 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 \010)
\cK
denetim karakteri ^K (DESTEKLENMEDİ) (vb. \001 )
\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 metni ... (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 (DESTEKLENMEZ) VIM
\%U12345678
Unicode karakter 0x12345678 (DESTEKLENMEZ) VIM
Karakter sınıfı öğeleri
Örnek
Açıklama
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
Açıklama
[\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:]]
adlandırılmış ASCII sınıfı, negatif karakter sınıfı içinde (≡ [:^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çinde adlandırılmış Unicode özelliği (≡ \P{Name})
Perl karakter sınıfları
Yalnızca ASCII
Örnek
Açıklama
\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
Açıklama
[[: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şaretleri (≡ [!-/:-@[-{-~])
[[: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
Açıklama
C
other
Cc
denetimi
Cf
format
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
kapalı işaret
Mn
geçirgen olmayan işareti
N
Numara
Nd
ondalık sayı
Nl
mektup 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 kapat
Pf
son noktalama işaretleri
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
Açıklama
\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]) (DESTEKLENMEZ) VIM
\S
boş olmayan boşluk karakteri (≡ [^ \t]) (DESTEKLENMEDİ) VIM
\d
rakamlar (≡ [0-9]) VIM
\D
VIM değil \d
\x
onaltılık basamaklar (≡ [0-9A-Fa-f]) (DESTEKLENMEZ) VIM
\X
not \x (DESTEKLENMIYOR) VIM
\o
sekizli basamaklar (≡ [0-7]) (DESTEKLENMEZ) VIM
\O
not \o (DESTEKLENMIYOR) VIM
\w
sözcük karakteri VIM
\W
VIM değil \w
\h
sözcük başı karakteri (DESTEKLENMEDİ) VIM
\H
not \h (DESTEKLENMIYOR) VIM
\a
alfabetik (DESTEKLENMEDİ) VIM
\A
not \a (DESTEKLENMIYOR) 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
eşleşme olayı (DESTEKLENMEDİ) VIM
\m
magic (DESTEKLENMEDİ) VIM
\M
nomagic (DESTEKLENMEDİ) VIM
\v
verymagic (DESTEKLENMEDİ) VIM
\V
verynomagic (DESTEKLENMEDİ) VIM
\Z
Unicode birleştirme karakterleri arasındaki farkları yoksayma (DESTEKLENMEDİ) VIM
Sihir
Örnek
Açıklama
(?{code})
rastgele Perl kodu (DESTEKLENMEDİ) PERL
(??{code})
ertelenen rastgele Perl kodu (DESTEKLENMEDİ) PERL
(?n)
kayıt defteri 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 belirtme çizgisi (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ış geri başvuru (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)
regexps'leri Prolog gibi daha fazla yapın (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.