All Products
Search
Document Center

Simple Log Service:Ekspresi reguler

Last Updated:Jun 05, 2026

Pelajari cara transformasi data SLS menangani pencocokan ekspresi reguler, escaping karakter, dan pengelompokan.

Pencocokan penuh

Pencocokan penuh mengharuskan ekspresi reguler untuk mencocokkan seluruh string. Misalnya, \d+ merupakan pencocokan penuh untuk string 1234.

Beberapa fungsi mendukung pencocokan sebagian. Untuk menerapkan pencocokan penuh, tambahkan ^ di awal dan $ di akhir, seperti pada contoh berikut: ^regular expression$. Sintaks lengkap regex dijelaskan dalam referensi Python Regular expression operations.

Tabel berikut menunjukkan mode pencocokan setiap fungsi.

Kategori

Fungsi

Mode pencocokan

Fungsi operasi 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

Dikontrol parameter. Default-nya pencocokan penuh.

e_search

Pencocokan sebagian

regex_select

Pencocokan sebagian

regex_findall

Pencocokan sebagian

regex_match

Dikontrol parameter. Default-nya pencocokan sebagian.

regex_replace

Pencocokan sebagian

regex_split

Pencocokan sebagian

Contoh mode pencocokan:

  • regex_match("abc123", r"\d+"): Cocok (default-nya pencocokan sebagian).

  • regex_match("abc123", r"\d+", full=True): Tidak cocok (mode pencocokan penuh diaktifkan).

  • regex_match("abc123", r"^\d+$"): Tidak cocok. Setara dengan mode pencocokan penuh.

  • e_search(r'status~="\d+"'): Mencocokkan nilai bidang status. Setara dengan mode pencocokan sebagian.

  • e_search(r'status~="^\d+$"'): Mencocokkan nilai bidang status. Setara dengan mode pencocokan penuh.

Escaping karakter

Ekspresi reguler mengandung karakter khusus. Untuk mencocokkannya secara literal, lakukan escaping dengan salah satu metode berikut:

  • Gunakan backslash (\) untuk escaping.

    Character escaping mencakup sintaks lengkapnya.

  • Gunakan fungsi str_regex_escape.

    • Misalnya, e_drop_fields(str_regex_escape("abc.test")) menghapus bidang abc.test.

    • Sebagai perbandingan, e_drop_fields("abc.test") menghapus bidang yang cocok dengan abc?test, di mana tanda tanya (?) merepresentasikan satu karakter apa pun.

Pengelompokan

Tanda kurung () digunakan untuk mengelompokkan ekspresi guna pengulangan atau backreference. Contoh berikut menunjukkan perbedaannya:

"""
Log sebelum diproses:
SourceIP: 192.0.2.1
Log setelah diproses:
SourceIP: 192.0.2.1
ip: 192.0.2.1
"""
# Tanpa kelompok:
e_regex("SourceIP",r"\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}","ip")
# Dengan kelompok:
e_regex("SourceIP", "\d{1,3}(.\d{1,3}){3}", "ip")

Capturing groups

Capturing group menyimpan hasil pencocokan untuk backreference nanti. Setiap kelompok yang tanda kurungnya () tidak diawali dengan ?: merupakan capturing group.

Capturing group diberi nomor mulai dari 1, dari kiri ke kanan, berdasarkan posisi tanda kurung buka. Misalnya, ekspresi berikut memiliki tiga kelompok:

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

1     1 2      3     32

Jika sebuah regex mengandung capturing group standar dan bernama, kelompok standar diberi nomor terlebih dahulu, kemudian kelompok bernama. SLS mendukung referensi langsung ke kelompok bernama berdasarkan namanya dalam ekspresi atau program.

Non-capturing groups

Non-capturing group tidak menyimpan hasil pencocokan. Kelompok yang tanda kurungnya () diawali dengan ?: merupakan non-capturing group.

Untuk mencocokkan program atau project, gunakan pro(gram|ject). Jika penyimpanan hasil pencocokan tidak diperlukan, gunakan bentuk non-capturing pro(?:gram|ject).

Catatan

(?:x) mencocokkan x tanpa menyimpan hasilnya, sehingga Anda dapat mendefinisikan subekspresi untuk digunakan bersama operator regex.