Artikel ini menyediakan gambaran umum sintaks ekspresi reguler yang didukung oleh Bahasa Kueri Kusto (KQL), yang merupakan sintaks pustaka RE2.
Ada sejumlah operator dan fungsi KQL yang melakukan pencocokan string, pemilihan, dan ekstraksi dengan ekspresi reguler, seperti matches regex, parse, dan replace_regex().
Dalam KQL, ekspresi reguler harus dikodekan sebagai literal string dan mengikuti aturan pengutipan string. Misalnya, regex \A RE2 diwakili dalam KQL sebagai "\\A". Garis miring terbelakang ekstra menunjukkan bahwa garis miring terbelakang lainnya adalah bagian dari ekspresi \Areguler .
Gambaran umum sintaksis
Tabel berikut ini gambaran umum sintaks ekspresi reguler RE2, yang digunakan untuk menulis ekspresi reguler di Kusto.
Elemen Sintaks
Deskripsi
Literal tunggal
Karakter tunggal cocok dengan dirinya sendiri, kecuali untuk metacharacters (* + ? ( ) |), yang memiliki arti unik seperti yang dijelaskan dalam baris berikut.
Metakarakter
Untuk mencocokkan metacharacter secara harfiah, lepaskan dengan garis miring terbalik. Misalnya, ekspresi \+ reguler cocok dengan karakter literal plus (+).
Pergantian
Alternatif dua ekspresi dengan untuk membuat ekspresi baru yang cocok dengan | salah satu ekspresi. Misalnya, e1 | e2 cocok dengan e1 atau e2.
Rangkaian
Menggabungkan dua ekspresi untuk membuat ekspresi baru yang cocok dengan ekspresi pertama diikuti dengan ekspresi kedua. Misalnya, e1e2 kecocokan e1 diikuti oleh e2.
Pengulangan
Metacharacters ?, +, dan * adalah operator pengulangan. Misalnya, e1? cocok dengan nol atau satu kemunculan e1, e1+ cocok dengan satu atau beberapa kemunculan e1, dan e1* cocok dengan urutan nol atau lebih, mungkin berbeda, string yang cocok e1.
Catatan
Operator ekspresi reguler mengevaluasi dalam urutan ini: pergantian (|), perangkaian (ekspresi berdampingan), dan pengulangan (?, +, *). Gunakan tanda kurung untuk mengontrol urutan evaluasi.
Ekspresi karakter tunggal
Contoh
Deskripsi
.
karakter apa pun, mungkin termasuk garis baru (s =true)
kelas karakter Unicode yang ditiadakan (nama satu huruf)
\P{Greek}
kelas karakter Unicode yang ditiadakan
Komposit
Contoh
Deskripsi
xy
x diikuti oleh y
x\|y
x atau y (lebih memilih x)
Repetisi
Contoh
Deskripsi
x*
nol atau lebih x, lebih banyak lebih baik
x+
satu atau lebih x, lebih banyak lebih baik
x?
zero atau satu x, satu lebih baik
x{n,m}
n atau n+1 atau ... atau mx, lebih banyak lebih baik
x{n,}
n atau lebih x, lebih banyak lebih baik
x{n}
tepatnya nx
x*?
nol atau lebih x, lebih sedikit lebih baik
x+?
satu atau lebih x, lebih sedikit lebih baik
x??
no atau sat x, nol lebih baik
x{n,m}?
n atau n+1 atau ... atau mx, lebih sedikit lebih baik
x{n,}?
n atau lebih x, lebih sedikit lebih baik
x{n}?
tepatnya nx
x{}
(≡ x*) (TIDAK DIDUKUNG) VIM
x{-}
(≡ x*?) (TIDAK DIDUKUNG) VIM
x{-n}
(≡ x{n}?) (TIDAK DIDUKUNG) VIM
x=
(≡ x?) (TIDAK DIDUKUNG) VIM
Pembatasan implementasi: Bentuk penghitungan x{n,m}, x{n,}, dan x{n} menolak bentuk yang membuat jumlah repetisi minimum atau maksimum di atas 1.000. Pengulangan tidak terbatas tidak tunduk pada pembatasan ini.
Repetisi posesif
Contoh
Deskripsi
x*+
nol atau lebih x, posesif (TIDAK DIDUKUNG)
x++
satu atau lebih x, posesif (TIDAK DIDUKUNG)
x?+
nol atau satu x, posesif (TIDAK DIDUKUNG)
x{n,m}+
n atau ... atau mx, posesif (TIDAK DIDUKUNG)
x{n,}+
n atau lebih x, posesif (TIDAK DIDUKUNG)
x{n}+
tepatnya nx, posesif (TIDAK DIDUKUNG)
Pengelompokan
Contoh
Deskripsi
(re)
grup pengambilan bernomor (submatch)
(?P<name>re)
bernama & grup penangkap bernomor (submatch)
(?<name>re)
bernama & grup penangkap bernomor (submatch) (TIDAK DIDUKUNG)
(?'name're)
bernama & grup penangkap bernomor (submatch) (TIDAK DIDUKUNG)
(?:re)
grup non-penangkap
(?flags)
mengatur bendera dalam grup saat ini; tidak menangkap
(?flags:re)
mengatur bendera selama re; tidak menangkap
(?#text)
komentar (TIDAK DIDUKUNG)
(?\|x\|y\|z)
pengaturan ulang penomoran cabang (TIDAK DIDUKUNG)
(?>re)
pencocokan re pasif (TIDAK DIDUKUNG)
re@>
pencocokan re pasif (TIDAK DIDUKUNG) VIM
%(re)
VIM grup non-penangkap (TIDAK DIDUKUNG)
Bendera
Contoh
Deskripsi
i
tidak peka terhadap huruf besar/kecil (false default)
m
mode multi-line: ^ dan $ dan cocokkan garis mulai/akhir selain teks awal/akhir (false default)
s
biarkan . cocok \n (false default)
U
ungreedy: menukar makna x* dan x*?, x+ dan x+? dll (default false)
Sintaksis bendera adalah xyz (set) atau -xyz (clear) atau xy-z (set xy, clear z).
Untuk menggunakan bendera, Anda harus menentukan kind parameter dan flags , sebagai berikut: kind=regexflags=regexFlags.
String kosong
Contoh
Deskripsi
^
di awal teks atau baris (m=true)
$
di akhir teks (seperti \z not\Z) atau baris (m=true)
\A
di awal teks
\b
pada batas kata ASCII (\w di satu sisi dan \W, \A, atau \z di sisi lain)
\B
Tidak pada batas kata ASCII
\g
di awal subteks yang sedang dicari (TIDAK DIDUKUNG) PCRE
\G
di akhir pencocokan terakhir (TIDAK DIDUKUNG) PERL
\Z
di akhir teks, atau sebelum garis baru di akhir teks (TIDAK DIDUKUNG)
\z
di akhir teks
(?=re)
sebelum teks cocok re (TIDAK DIDUKUNG)
(?!re)
sebelum teks tidak cocok re (TIDAK DIDUKUNG)
(?<=re)
setelah teks cocok re (TIDAK DIDUKUNG)
(?<!re)
setelah teks tidak cocok re (TIDAK DIDUKUNG)
re&
sebelum teks cocok re (TIDAK DIDUKUNG) VIM
re@=
sebelum teks cocok re (TIDAK DIDUKUNG) VIM
re@!
sebelum teks tidak cocok re (TIDAK DIDUKUNG) VIM
re@<=
setelah teks cocok re (TIDAK DIDUKUNG) VIM
re@<!
setelah teks tidak cocok re (TIDAK DIDUKUNG) VIM
\zs
set mulai pencocokan (= \K) (TIDAK DIDUKUNG) VIM
\ze
set akhir pencocokan (TIDAK DIDUKUNG) VIM
\%^
awal file (TIDAK DIDUKUNG) VIM
\%$
akhir file (TIDAK DIDUKUNG) VIM
\%V
di layar (TIDAK DIDUKUNG) VIM
\%#
posisi kursor (TIDAK DIDUKUNG) VIM
\%'m
tandai m posisi (NOT SUPPORTED) VIM
\%23l
di baris 23 (TIDAK DIDUKUNG) VIM
\%23c
di kolom 23 (TIDAK DIDUKUNG) VIM
\%23v
di kolom virtual 23 (TIDAK DIDUKUNG) VIM
Urutan escape
Contoh
Deskripsi
\a
bell (≡ \007)
\f
umpan formulir (≡ \014)
\t
tab horizontal (≡ \011)
\n
garis baru (≡ \012)
\r
kembali ke awal (≡ \015)
\v
karakter tab vertikal (≡ \013)
\*
literal *, untuk karakter tanda baca apa pun *
\123
kode karakter oktal (hingga tiga digit)
\x7F
kode karakter hex (tepatnya dua digit)
\x{10FFFF}
kode karakter hex
\C
cocokkan satu byte bahkan dalam mode UTF-8
\Q...\E
teks literal ... bahkan jika ... memiliki tanda baca
\1
backreference (TIDAK DIDUKUNG)
\b
backspace (TIDAK DIDUKUNG) (gunakan \010)
\cK
control char ^K (TIDAK DIDUKUNG) (gunakan \001 dll)
\e
escape (TIDAK DIDUKUNG) (gunakan \033)
\g1
backreference (TIDAK DIDUKUNG)
\g{1}
backreference (TIDAK DIDUKUNG)
\g{+1}
backreference (TIDAK DIDUKUNG)
\g{-1}
backreference (TIDAK DIDUKUNG)
\g{name}
backreference bernama (TIDAK DIDUKUNG)
\g<name>
panggilan subrutin (TIDAK DIDUKUNG)
\g'name'
panggilan subrutin (TIDAK DIDUKUNG)
\k<name>
backreference bernama (TIDAK DIDUKUNG)
\k'name'
backreference bernama (TIDAK DIDUKUNG)
\lX
huruf kecil X (TIDAK DIDUKUNG)
\ux
huruf besar x (TIDAK DIDUKUNG)
\L...\E
teks huruf kecil ... (TIDAK DIDUKUNG)
\K
reset awal $0 (TIDAK DIDUKUNG)
\N{name}
karakter Unicode bernama (TIDAK DIDUKUNG)
\R
hentian garis (TIDAK DIDUKUNG)
\U...\E
teks huruf besar ... (TIDAK DIDUKUNG)
\X
urutan Unicode diperluas (TIDAK DIDUKUNG)
\%d123
karakter desimal 123 (TIDAK DIDUKUNG) VIM
\%xFF
karakter hex FF (TIDAK DIDUKUNG) VIM
\%o123
karakter oktal 123 (TIDAK DIDUKUNG) VIM
\%u1234
0x1234 karakter Unicode (TIDAK DIDUKUNG) VIM
\%U12345678
0x12345678 karakter Unicode (TIDAK DIDUKUNG) VIM
Elemen kelas karakter
Contoh
Deskripsi
x
karakter tunggal
A-Z
rentang karakter (inklusif)
\d
Kelas karakter Perl
[:foo:]
Kelas karakter ASCII foo
\p{Foo}
Kelas karakter Unicode Foo
\pF
Kelas karakter Unicode F (nama satu huruf)
Menamai kelas karakter sebagai elemen kelas karakter
Contoh
Deskripsi
[\d]
digit (≡ \d)
[^\d]
bukan digit (≡ \D)
[\D]
bukan digit (≡ \D)
[^\D]
bukan bukan digit (≡ \d)
[[:name:]]
menamai kelas ASCII di dalam kelas karakter (≡ [:name:])
[^[:name:]]
menamai kelas ASCII di dalam kelas karakter yang ditiadakan (≡ [:^name:])
[\p{Name}]
menamai properti Unicode di dalam kelas karakter (≡ \p{Name})
[^\p{Name}]
menamai properti Unicode di dalam kelas karakter yang ditiadakan (≡ \P{Name})
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat: https://aka.ms/ContentUserFeedback.