Topik ini menjelaskan sintaksis dasar serta memberikan contoh penggunaan fungsi ekspresi reguler.
Ikhtisar fungsi ekspresi reguler
Simple Log Service mendukung fungsi ekspresi reguler berikut. Ekspresi reguler menggunakan sintaks RE2.
Fungsi | Sintaks | Deskripsi | Dukungan SQL | Dukungan SPL |
regexp_extract_all(x, ekspresi reguler) | Mengekstrak substring yang cocok dengan ekspresi reguler dari string sumber dan mengembalikan array substring tersebut. | √ | × | |
regexp_extract_all(x, ekspresi reguler, n) | Mengekstrak substring yang cocok dengan ekspresi reguler dari string sumber dan mengembalikan array substring yang cocok dengan kelompok penangkapan. | √ | × | |
regexp_extract(x, ekspresi reguler) | Mengekstrak dan mengembalikan substring pertama yang cocok dengan ekspresi reguler dari string sumber. | √ | √ | |
regexp_extract(x, ekspresi reguler, n) | Mengekstrak substring yang cocok dengan ekspresi reguler dari string sumber dan mengembalikan substring ke-n yang cocok dengan kelompok penangkapan. | √ | √ | |
regexp_extract_bool(x, ekspresi reguler) | Mengekstrak dan mengembalikan substring yang cocok dengan ekspresi reguler dari string sumber, dan mengonversi substring tersebut ke tipe BOOLEAN. Jika konversi gagal, | √ | × | |
regexp_extract_bool(x, ekspresi reguler, n) | Mengekstrak substring yang cocok dengan ekspresi reguler dari string sumber, mengembalikan substring yang cocok dengan kelompok penangkapan, dan mengonversi substring tersebut ke tipe BOOLEAN. Jika konversi gagal, | √ | × | |
regexp_extract_long(x, ekspresi reguler) | Mengekstrak dan mengembalikan substring yang cocok dengan ekspresi reguler dari string sumber, dan mengonversi substring tersebut ke tipe BIGINT. Jika konversi gagal, | √ | × | |
regexp_extract_long(x, ekspresi reguler, n) | Mengekstrak substring yang cocok dengan ekspresi reguler dari string sumber, mengembalikan substring yang cocok dengan kelompok penangkapan, dan mengonversi substring tersebut ke tipe BIGINT. Jika konversi gagal, | √ | × | |
regexp_extract_double(x, ekspresi reguler) | Mengekstrak dan mengembalikan substring pertama yang cocok dengan ekspresi reguler dari string sumber, dan mengonversi substring tersebut ke tipe DOUBLE. Jika konversi gagal, | √ | × | |
regexp_extract_double(x, ekspresi reguler, n) | Mengekstrak substring yang cocok dengan ekspresi reguler dari string sumber, mengembalikan substring yang cocok dengan kelompok penangkapan, dan mengonversi substring tersebut ke tipe DOUBLE. Jika konversi gagal, | √ | × | |
regexp_extract_map(x, ekspresi reguler, keys) | Menentukan informasi kunci. Substring yang cocok dengan kelompok penangkapan digunakan sebagai nilai. | √ | × | |
regexp_extract_map(x, ekspresi reguler) | Ekspresi reguler berisi dua kelompok penangkapan yang cocok dengan kunci dan nilai. | √ | × | |
regexp_like(x, ekspresi reguler) | Memeriksa apakah string sumber cocok dengan ekspresi reguler. | √ | √ | |
regexp_replace(x, ekspresi reguler) | Menghapus substring yang cocok dengan ekspresi reguler dari string sumber dan mengembalikan substring yang tersisa. | √ | √ | |
regexp_replace(x, ekspresi reguler, string pengganti) | Mengganti substring yang cocok dengan ekspresi reguler dalam string sumber dan mengembalikan string baru. | √ | √ | |
regexp_split(x, ekspresi reguler) | Memisahkan string sumber menggunakan ekspresi reguler dan mengembalikan array substring. | √ | × |
Saat menggunakan fungsi ekspresi reguler untuk mengekstrak tanda kutip tunggal (') dari sebuah string, Anda harus menambahkan tanda kutip tunggal (') lain ke dalam ekspresi reguler tersebut. Untuk detail lebih lanjut, lihat Contoh 3 dari fungsi regexp_extract.
Fungsi regexp_extract_all
Fungsi regexp_extract_all mengekstrak substring yang sesuai dengan ekspresi reguler dari string sumber.
Sintaksis
Mengekstrak semua substring yang sesuai dengan ekspresi reguler dari string sumber dan mengembalikannya dalam array.
regexp_extract_all(x, ekspresi reguler)Mengekstrak substring yang sesuai dengan ekspresi reguler dari string sumber dan mengembalikan array substring yang sesuai dengan kelompok penangkap tertentu.
regexp_extract_all(x, ekspresi reguler, n)
Parameter
Parameter | Deskripsi |
x | Nilainya bertipe VARCHAR. |
ekspresi reguler | Ekspresi reguler yang berisi kelompok penangkap. Sebagai contoh, |
n | Kelompok penangkap ke-n. n adalah bilangan bulat yang dimulai dari 1. |
Tipe nilai kembali
Tipe array.
Contoh
Contoh 1: Ekstrak semua digit dari nilai bidang
server_protocol.Bidang Sampel
server_protocol:HTTP/2.0Pernyataan Kueri (Tes)
*| SELECT regexp_extract_all(server_protocol, '\d+')Hasil Kueri dan Analisis

Contoh 2: Ekstrak bagian Chrome dari nilai bidang
http_user_agentdan hitung jumlah permintaan yang dilakukan oleh browser Chrome.Bidang Sampel
http_user_agent:Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/14.0.803.0 Safari/535.1Pernyataan kueri (Test)
*| SELECT regexp_extract_all(http_user_agent, '(Chrome)',1) AS Chrome, count(*) AS count GROUP BY ChromeHasil Kueri dan Analisis

Fungsi regexp_extract
Fungsi regexp_extract mengekstrak substring yang cocok dengan ekspresi reguler dari string sumber.
Sintaksis
Mengekstrak dan mengembalikan substring pertama yang cocok dengan ekspresi reguler dari string sumber.
regexp_extract(x, ekspresi reguler)Mengekstrak substring yang cocok dengan ekspresi reguler dari string sumber dan mengembalikan substring yang cocok dengan kelompok penangkap ke-n.
regexp_extract(x, ekspresi reguler, n)
Parameter
Parameter | Deskripsi |
x | Nilainya bertipe VARCHAR. |
ekspresi reguler | Ekspresi reguler yang berisi kelompok penangkap. Sebagai contoh, |
n | Kelompok penangkap ke-n. n adalah bilangan bulat yang dimulai dari 1. |
Tipe nilai kembali
VARCHAR
Contoh
SQL
-
Contoh 1: Ekstrak digit pertama dari nilai field
server_protocol.Field Sampel
server_protocol:HTTP/2.0Pernyataan Kueri (Tes)
*|SELECT regexp_extract(server_protocol, '\d+')Hasil Kueri dan Analisis

-
Contoh 2: Ekstrak bagian file dari nilai field
request_uridan hitung jumlah permintaan akses untuk setiap file.Field Sampel
request_uri:/request/path-3/file-5Pernyataan Kueri (Tes)
* | SELECT regexp_extract(request_uri, '.*\/(file.*)', 1) AS file, count(*) AS count GROUP BY fileHasil Kueri dan Analisis

-
Contoh 3: Ekstrak tanda kutip tunggal (') dan digit dari nilai field
message.Field Sampel
message:error'1232Pernyataan Kueri
* | SELECT regexp_extract(message, '''\d+')CatatanSaat menggunakan fungsi ekspresi reguler untuk mengekstrak tanda kutip tunggal ('), Anda harus menambahkan tanda kutip tunggal lainnya (') ke dalam ekspresi reguler.
Hasil Kueri dan Analisis

SPL
Contoh 1: Ekstrak digit pertama dari nilai field server_protocol.
Field Sampel
server_protocol:HTTP/2.0
Pernyataan Kueri
* | extend a = regexp_extract(server_protocol, '\d+')
Hasil Kueri dan Analisis

Contoh 2: Ekstrak bagian file dari nilai field
request_uri.Field Sampel
request_uri:/request/path-3/file-5
Pernyataan Kueri
* | extend a = regexp_extract(request_uri, '.*\/(file.*)',1)
Hasil Kueri dan Analisis

Contoh 3: Ekstrak tanda kutip tunggal (') dan digit dari nilai field
message.Field Sampel
message:error'1232
Pernyataan Kueri
* | extend a = regexp_extract(message, '''\d+')
Catatan
Saat menggunakan fungsi ekspresi reguler untuk mengekstrak tanda kutip tunggal ('), Anda harus menambahkan tanda kutip tunggal lainnya (') ke dalam ekspresi reguler.
Hasil Kueri dan Analisis

Fungsi regexp_extract_bool
Fungsi regexp_extract_bool mengekstrak substring yang cocok dengan ekspresi reguler dari string sumber dan mengonversinya ke tipe BOOLEAN. Jika konversi gagal, nilai null akan dikembalikan. Konversi hanya berhasil jika substring adalah "true" atau "false", dan tidak peka terhadap huruf besar-kecil.
Sintaksis
Mengekstrak substring yang cocok dengan ekspresi reguler dari string sumber dan mengonversinya ke tipe BOOLEAN. Jika konversi gagal, nilai
nullakan dikembalikan.regexp_extract_bool(x, ekspresi reguler)Mengekstrak substring yang cocok dengan ekspresi reguler dari string sumber, mengembalikan substring yang cocok dengan kelompok penangkap yang ditentukan, dan mengonversinya ke tipe BOOLEAN. Jika konversi gagal, nilai
nullakan dikembalikan.regexp_extract_bool(x, ekspresi reguler, n)
Parameter
Parameter | Deskripsi |
x | Nilainya bertipe VARCHAR. |
ekspresi reguler | Ekspresi reguler yang berisi kelompok penangkap. Sebagai contoh, |
n | Kelompok penangkap ke-n. n adalah bilangan bulat yang dimulai dari 1. |
Tipe nilai kembali
BOOLEAN
Contoh
Ekstrak nilai boolean dari nilai bidang.
Bidang Sampel
falsePernyataan Kueri (Tes)
*| select regexp_extract_bool('false', '[a-zA-Z]+')Hasil Kueri dan Analisis

Fungsi regexp_extract_long
Fungsi regexp_extract_long mengekstrak substring yang cocok dengan ekspresi reguler dari string sumber dan mengonversinya ke tipe BIGINT. Jika konversi gagal, nilai null akan dikembalikan.
Sintaksis
Mengekstrak substring yang cocok dengan ekspresi reguler dari string sumber dan mengonversinya ke tipe BIGINT. Jika konversi gagal, nilai
nullakan dikembalikan.regexp_extract_long(x, ekspresi reguler)Mengekstrak substring yang cocok dengan ekspresi reguler dari string sumber, mengembalikan substring yang cocok dengan kelompok penangkap tertentu, dan mengonversinya ke tipe BIGINT. Jika konversi gagal, nilai
nullakan dikembalikan.regexp_extract_long(x, ekspresi reguler, n)
Parameter
Parameter | Deskripsi |
x | Nilainya bertipe VARCHAR. |
ekspresi reguler | Ekspresi reguler yang berisi kelompok penangkap. Sebagai contoh, |
n | Kelompok penangkap ke-n. n adalah bilangan bulat yang dimulai dari 1. |
Tipe nilai kembali
BIGINT
Contoh
Ekstrak angka dari bidang
time.Bidang Sampel
time:19/Dec/2024:06:16:06Pernyataan Kueri (Tes)
*|SELECT regexp_extract_long(time, '(\d{2})/', 1)Hasil Kueri dan Analisis

fungsi regexp_extract_double
Fungsi regexp_extract_double mengekstrak substring yang cocok dengan ekspresi reguler dari string sumber dan mengonversinya ke tipe DOUBLE. Jika konversi gagal, nilai null akan dikembalikan.
Sintaksis
-
Mengekstrak substring yang sesuai dengan ekspresi reguler dari string sumber dan mengonversinya menjadi tipe DOUBLE. Jika konversi gagal,
nullakan dikembalikan.regexp_extract_double(x, ekspresi reguler) -
Mengekstrak substring yang sesuai dengan ekspresi reguler dari string sumber, mengembalikan substring yang cocok dengan kelompok penangkap yang ditentukan, dan mengonversinya menjadi tipe DOUBLE. Jika konversi gagal,
nullakan dikembalikan.regexp_extract_double(x, ekspresi reguler, n)
Parameter
Parameter | Deskripsi |
x | Nilainya bertipe VARCHAR. |
ekspresi reguler | Ekspresi reguler yang berisi kelompok penangkap. Sebagai contoh, |
n | Kelompok penangkap ke-n. n adalah bilangan bulat yang dimulai dari 1. |
Tipe nilai kembali
Tipe data: Double.
Contoh
Ekstrak angka dari bidang
server_protocol.Contoh bidang:
server_protocol:HTTP/1.1Pernyataan kueri (Tes):
*|SELECT regexp_extract_double(server_protocol, '\d+')Hasil kueri dan analisis:

regexp_extract_map fungsi
Fungsi regexp_extract_map mengekstrak substring yang sesuai dengan semua kelompok penangkap dalam ekspresi reguler dari string sumber.
Sintaks
Menentukan informasi kunci. Substring yang cocok dengan kelompok penangkap digunakan sebagai nilai.
regexp_extract_map(x, ekspresi reguler, kunci)Ekspresi reguler berisi dua kelompok penangkap yang sesuai dengan kunci dan nilai.
regexp_extract_map(x, ekspresi reguler)Parameter
Parameter | Deskripsi |
x | Nilai tersebut bertipe VARCHAR. |
ekspresi reguler | Ekspresi reguler yang berisi kelompok penangkapan. Sebagai contoh, |
kunci | Nama kunci untuk substring yang ditangkap. Nilai tersebut bertipe ARRAY(VARCHAR). Jumlah elemen harus sama dengan jumlah kelompok penangkapan dalam parameter ekspresi reguler. |
Tipe nilai kembali
MAP(VARCHAR, VARCHAR)
Contoh
Contoh 1: Ekstrak nama protokol dan versi dari bidang server_protocol.
Bidang contoh:
server_protocol: 'HTTP/2.0'Pernyataan kueri:
select regexp_extract_map(server_protocol, '(\w+)/([\d\.]+)', array['name', 'version']) as protocolHasil kueri dan analisis:

Contoh 2: Ekstrak semua pasangan kunci-nilai dari bidang content.
Bidang contoh:
content: 'verb="GET" URI="/healthz" latency="45.911µs" userAgent="kube-probe/1.30+"'Pernyataan kueri:
select regexp_extract_map(content, '(\w+)="([^"]*)"') as argsData keluaran:

Fungsi regexp_like
Fungsi regexp_like memeriksa apakah string sumber cocok dengan ekspresi reguler.
Sintaksis
regexp_like(x, ekspresi reguler)Parameter
Parameter | Deskripsi |
x | Nilainya bertipe VARCHAR. |
ekspresi reguler | Sebuah ekspresi reguler. |
Tipe nilai kembali
BOOLEAN
Contoh
SQL
Periksa apakah nilai dari bidang server_protocol mengandung digit.
Bidang Contoh
server_protocol:HTTP/2.0Pernyataan Kueri (Uji)
*| select regexp_like(server_protocol, '\d+')Hasil Kueri dan Analisis

SPL
Periksa apakah nilai dari bidang server_protocol mengandung digit.
Bidang Contoh
server_protocol:HTTP/2.0Pernyataan Kueri
* |extend a = regexp_like(server_protocol, '\d+')Hasil Kueri dan Analisis

Fungsi regexp_replace
Menghapus atau mengganti substring yang sesuai dengan ekspresi reguler dalam string sumber.
Sintaksis
Menghapus substring yang sesuai dengan ekspresi reguler dari string sumber dan mengembalikan substring yang tersisa.
regexp_replace(x, ekspresi reguler)Mengganti substring yang sesuai dengan ekspresi reguler dalam string sumber dan mengembalikan string baru.
regexp_replace(x, ekspresi reguler, string pengganti)
Parameter
Parameter | Deskripsi |
x | Nilainya bertipe VARCHAR. |
ekspresi reguler | Sebuah ekspresi reguler. |
string pengganti | Substring yang digunakan untuk penggantian. |
Tipe nilai kembali
VARCHAR
Contoh
SQL
Contoh 1: Ganti nama wilayah yang dimulai dengan
cnpada nilai bidangregiondengan China dan hitung jumlah permintaan dari China.Contoh
region:cn-shanghaiPernyataan kueri (Test)
* | select regexp_replace(region, 'cn.*','China') AS region, count(*) AS count GROUP BY regionHasil Kueri dan Analisis

Contoh 2: Hapus nomor versi dari nilai bidang
server_protocoldan hitung jumlah permintaan untuk setiap protokol komunikasi.Bidang Contoh
server_protocol:HTTP/2.0Pernyataan Kueri (Tes)
*| select regexp_replace(server_protocol, '.\d+') AS server_protocol, count(*) AS count GROUP BY server_protocolHasil Kueri dan Analisis

SPL
Contoh 1: Ganti nama wilayah yang dimulai dengan cn pada nilai bidang
regiondengan China.Bidang Contoh
region:cn-shanghaiPernyataan Kueri
* | extend a = regexp_replace(region, 'cn.*','China')Hasil Kueri dan Analisis

Contoh 2: Hapus nomor versi dari nilai bidang
server_protocol.Bidang Contoh
server_protocol:HTTP/2.0Pernyataan Kueri (Tes)
* | extend a = regexp_replace(server_protocol, '.\d+')Hasil Kueri dan Analisis

Fungsi regexp_split
Fungsi regexp_split memisahkan string sumber dan mengembalikan array substring.
Sintaksis
regexp_split(x, ekspresi reguler)Parameter
Parameter | Deskripsi |
x | Nilainya bertipe VARCHAR. |
ekspresi reguler | Sebuah ekspresi reguler. |
Tipe nilai kembali
Tipe datanya adalah array.
Contoh
Gunakan garis miring (/) untuk memisahkan nilai dari bidang request_uri.
Contoh Bidang
request_uri:/request/path-0/file-7Pernyataan Kueri (Uji)
* | SELECT regexp_split(request_uri,'/')Hasil Kueri dan Analisis
