Dasar Otomasi · Pelajaran 3 dari 8

Pola teks dengan regular expression

10 menit baca · BelajarCode

Regular expression (regex) adalah bahasa kecil untuk mendeskripsikan pola teks. Dengan regex, kamu bisa mencari semua tanggal, nomor nota, atau nominal uang di dalam teks panjang dengan satu baris kode.

Simbol regex yang paling sering dipakai
SimbolArtinyaContoh polaCocok dengan
\dSatu digit angka\d\d07, 42
\wHuruf, angka, atau garis bawah\w+invoice_12
\sSpasi atau tab\s+spasi berapa pun
+Satu kali atau lebih\d+7, 2026, 150000
*Nol kali atau lebihab*a, ab, abbb
?Nol atau satu kaliRp\.?Rp, Rp.
{n}Tepat n kali\d{4}2026
[...]Salah satu karakter[A-Z]huruf kapital apa pun
( )Mengelompokkan dan mengambil bagian(\d+)angkanya saja

Mencari semua kecocokan

Python
1import re23pesan = """Pesanan INV-2026-0012 sudah dibayar tanggal 03/09/2026.4Pesanan INV-2026-0015 menunggu pembayaran sampai 10/09/2026.5Hubungi kami di 0812-3456-7890."""67print(re.findall(r"INV-\d{4}-\d{4}", pesan))8print(re.findall(r"\d{2}/\d{2}/\d{4}", pesan))
Keluaran
['INV-2026-0012', 'INV-2026-0015']
['03/09/2026', '10/09/2026']

Huruf r di depan teks pola membuat garis miring terbalik dibaca apa adanya. Selalu tulis pola regex dengan awalan r.

Mengambil bagian dengan grup

Python
1import re23catatan = "Transfer Rp1.250.000 dari Bu Sari, lalu Rp75.000 dari Pak Budi, dan Rp. 300.000 dari Toko Maju."4nominal = re.findall(r"Rp\.?\s?([\d.]+)", catatan)5print(nominal)6angka = [int(n.replace(".", "")) for n in nominal]7print("Total:", sum(angka))
Keluaran
['1.250.000', '75.000', '300.000']
Total: 1625000

Tanda kurung ([\d.]+) membuat findall hanya mengembalikan bagian angkanya, tanpa "Rp".

Mengganti dengan pola

Python
1import re23teks = "Hubungi 0812-3456-7890 atau 0857 1111 2222 untuk info."4disamarkan = re.sub(r"(\d{4})[-\s]?\d{4}[-\s]?(\d{4})", r"\1-xxxx-\2", teks)5print(disamarkan)
Keluaran
Hubungi 0812-xxxx-7890 atau 0857-xxxx-2222 untuk info.

re.sub mengganti setiap kecocokan. \1 dan \2 merujuk grup pertama dan kedua dari pola, sehingga empat digit awal dan akhir tetap dipertahankan.

Regex mudah menjadi sulit dibaca

Regex sangat kuat, tetapi pola yang panjang sulit dipahami bahkan oleh penulisnya sendiri minggu depan. Pakai regex untuk pola yang memang rumit, beri komentar yang menjelaskan maksudnya, dan uji dengan contoh-contoh yang beragam.

Cek pemahaman

Pola regex mana yang cocok dengan kode pos Indonesia yang terdiri dari tepat 5 digit?

Latihan

Ambil data dari pesan pesanan

Dari pesan berikut, ambil nama produk, jumlah, dan harga satuannya, lalu hitung totalnya: "2x Kopi susu @15000, 1x Roti bakar @18000, 3x Air mineral @5000".

Jalankan contoh kode di pelajaran ini tanpa instalasi lewat compiler Python online.

Tandai pelajaran ini selesai

Masuk ke aplikasi untuk mencatat kemajuan, lalu lanjutkan ke pelajaran berikutnya dari perangkat mana pun.

Buka di aplikasi