全部产品
Search
文档中心

Simple Log Service:Ekspresi reguler

更新时间:Jul 02, 2025

Tema ini menjelaskan mode pencocokan untuk ekspresi reguler serta metode yang dapat digunakan untuk meloloskan karakter khusus dalam ekspresi reguler.

Pencocokan penuh

Jika ekspresi reguler cocok dengan seluruh string, maka pencocokan penuh dilakukan. Sebagai contoh, \d+ sepenuhnya cocok dengan 1234.

Beberapa fungsi mendukung pencocokan sebagian untuk ekspresi reguler. Untuk melakukan pencocokan penuh, Anda dapat mengapit ekspresi reguler menggunakan tanda caret (^) dan tanda dolar ($) dalam format ^Ekspresi reguler$. Untuk informasi lebih lanjut, lihat Operasi Ekspresi Reguler.

Tabel berikut menjelaskan mode pencocokan untuk fungsi yang berbeda.

Kategori

Fungsi

Mode pencocokan

Fungsi pemrosesan global

e_regex

Pencocokan sebagian

e_keep_fields

Pencocokan penuh

e_drop_fields

Pencocokan penuh

e_rename

Pencocokan penuh

e_kv

Pencocokan sebagian

Fungsi ekspresi

e_match

Pencocokan penuh secara default (dapat dikonfigurasi menggunakan parameter)

e_search

Pencocokan sebagian

regex_select

Pencocokan sebagian

regex_findall

Pencocokan sebagian

regex_match

Pencocokan sebagian secara default (dapat dikonfigurasi menggunakan parameter)

regex_replace

Pencocokan sebagian

regex_split

Pencocokan sebagian

Contoh berikut didasarkan pada mode pencocokan yang berbeda:

  • regex_match("abc123", r"\d+"): String cocok dengan ekspresi reguler. Dalam contoh ini, mode pencocokan default adalah pencocokan sebagian.

  • regex_match("abc123", r"\d+", full=True): String tidak cocok dengan ekspresi reguler. Dalam contoh ini, mode pencocokan diatur ke pencocokan penuh.

  • regex_match("abc123", r"^\d+$"): String tidak cocok dengan ekspresi reguler. Dalam contoh ini, mode pencocokan dianggap sebagai pencocokan penuh.

  • e_search(r'status~="\d+"'): Apakah nilai dari bidang status cocok dengan ekspresi reguler tergantung pada nilai aktual. Dalam contoh ini, mode pencocokan dianggap sebagai pencocokan sebagian.

  • e_search(r'status~="^\d+$"'): Apakah nilai dari bidang status cocok dengan ekspresi reguler tergantung pada nilai aktual. Dalam contoh ini, mode pencocokan dianggap sebagai pencocokan penuh.

Meloloskan karakter

Ekspresi reguler mungkin berisi karakter khusus. Jika Anda ingin mempertahankan arti literal dari karakter tersebut, Anda harus meloloskan karakter tersebut. Anda dapat menggunakan metode berikut untuk meloloskan karakter khusus:

  • Gunakan backslash (\).

    Untuk informasi lebih lanjut, lihat Meloloskan Karakter Khusus.

  • Gunakan fungsi str_regex_escape.

    • Contoh 1: Jika Anda menggunakan e_drop_fields(str_regex_escape("abc.test")), bidang abc.test akan dibuang.

    • Contoh 2: Jika Anda menggunakan e_drop_fields("abc.test"), bidang yang cocok dengan abc?test akan dibuang. Tanda tanya (?) menentukan karakter apa saja.

Grup

Anda dapat menggunakan tanda kurung () untuk mengapit subekspresi dalam ekspresi reguler guna membuat grup. Grup tersebut dapat dirujuk berulang kali. Contoh berikut menunjukkan perbedaan antara ekspresi reguler sebelum dan sesudah pembuatan grup:

"""
Log sebelum diproses:
SourceIP: 192.0.2.1
Log setelah diproses:
SourceIP: 192.0.2.1
ip: 192.0.2.1
"""
# Sebelum grup dibuat:
e_regex("SourceIP",r"\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}","ip")
# Setelah grup dibuat:
e_regex("SourceIP", "\d{1,3}(.\d{1,3}){3}", "ip")

Grup penangkapan

Konten teks yang cocok dengan grup penangkapan disimpan dalam memori. Konten teks yang cocok dapat digunakan kembali dalam ekspresi reguler lainnya menggunakan referensi balik. Jika konten yang diapit dalam tanda kurung () dari sebuah grup tidak dimulai dengan ?:, maka grup tersebut adalah grup penangkapan.

Secara default, semua grup penangkapan dinomori dari kiri ke kanan berdasarkan tanda kurung pembuka. Grup pertama diberi nomor 1, grup kedua diberi nomor 2, dan seterusnya. Dalam contoh berikut, tiga grup penangkapan dibuat:

(\d{4})-(\d{2}-(\d{2}))

1     1 2      3     32

Jika ekspresi reguler berisi grup penangkapan umum dan grup penangkapan bernama, grup penangkapan bernama dinomori setelah grup penangkapan umum. Simple Log Service memungkinkan Anda merujuk langsung nama kustom grup penangkapan dalam ekspresi reguler atau program.

Grup non-penangkapan

Konten teks yang cocok dengan grup non-penangkapan tidak disimpan dalam memori. Jika konten yang diapit dalam tanda kurung () dari sebuah grup dimulai dengan ?:, maka grup tersebut adalah grup non-penangkapan.

Sebagai contoh, jika Anda ingin mencari program dan project, Anda dapat menggunakan ekspresi reguler pro(gram|ject). Jika Anda tidak ingin menyimpan konten yang cocok dengan ekspresi reguler dalam memori, Anda dapat menggunakan pro(?:gram|ject).

Catatan

(?:x) menentukan bahwa x cocok dengan konten tetapi konten yang cocok tidak disimpan. Anda dapat mendefinisikan subekspresi dalam format (?:x) dan menggunakan subekspresi bersama dengan operator dalam ekspresi reguler.