Cara Menggunakan Ekspresi Reguler (Regex) dengan Python

Kuasai ekspresi reguler Python menggunakan modul re bawaan. Pelajari pencocokan string, pencarian pola, menemukan semua kemunculan, dan penggantian teks.

Coba Solusi ini di Editor

Ikhtisar

Ekspresi reguler, umumnya dikenal sebagai regex, adalah templat canggih yang digunakan untuk mencocokkan, mencari, dan memanipulasi string teks berdasarkan pola tertentu. Regex banyak digunakan untuk verifikasi email, validasi nomor telepon, pengikisan web, penguraian log, dan tugas mencari dan mengganti teks. Python menyediakan kemampuan regex penuh melalui modul `re` bawaan.

Modul `re` menawarkan beberapa fungsi utama tergantung pada tujuan Anda. Fungsi `re.search(pattern, string)` memindai string dan mengembalikan objek yang cocok untuk kemunculan pola yang pertama. Fungsi `re.match(pattern, string)` serupa tetapi hanya mencari dari awal string. Jika Anda ingin mengambil semua contoh pola dalam blok teks, `re.findall(pattern, string)` akan mengembalikannya sebagai daftar string.

Pola regex menggunakan metakarakter khusus seperti `\d` untuk angka, `\w` untuk karakter alfanumerik, `+` untuk satu atau lebih kemunculan, dan `*` untuk nol atau lebih. Saat menulis regex dengan Python, merupakan praktik standar untuk menggunakan literal string mentah (diawali dengan `r`, seperti `r"\d+"`) untuk mencegah Python memperlakukan garis miring terbalik sebagai rangkaian escape.

Kode & Output Eksekusi

Skrip ini mendemonstrasikan validasi struktur format, mengekstraksi token numerik, dan mengganti pola yang cocok menggunakan modul re.

regex_demo.py
Coba di Editor
import re

# 1. Searching for a pattern in text
log_message = "ERROR: Connection timeout at 04:30:15 on port 8080"
pattern_port = r"port \d+"

match = re.search(pattern_port, log_message)
if match:
    print("Found port pattern:", match.group())

# 2. Extracting all email addresses from a block of text
text = "Contact sales@pyrun.xyz or support@example.com for help."
pattern_email = r"[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}"

emails = re.findall(pattern_email, text)
print("Extracted emails:", emails)

# 3. Replacing patterns using re.sub
date_string = "2026/05/25"
# Replace slashes with dashes
clean_date = re.sub(r"/", "-", date_string)
print("Replaced Date:", clean_date)
Keluaran Terminal
Found port pattern: port 8080
Extracted emails: ['sales@pyrun.xyz', 'support@example.com']
Replaced Date: 2026-05-25

Implementasi Langkah demi Langkah

  • Impor modul re bawaan.
  • Tentukan pola pencarian regex menggunakan string mentah, seperti r"\d+" untuk menghindari masalah escape sequence.
  • Gunakan re.search() untuk menemukan kemunculan pertama atau re.findall() untuk mengumpulkan semua substring yang cocok.
  • Gunakan re.sub(pattern, replacement, string) untuk melakukan penggantian berbasis pola di dalam teks.

Pertanyaan yang Sering Diajukan

Apa manfaat menggunakan string mentah (r"...") untuk pola regex?

String mentah memperlakukan garis miring terbalik sebagai karakter literal, bukan karakter escape. Misalnya, r"\n" mewakili garis miring terbalik diikuti dengan "n", sedangkan "\n" mewakili karakter baris baru.

Bagaimana cara memeriksa apakah pencocokan regex berhasil?

re.search() dan re.match() mengembalikan objek yang cocok jika berhasil, atau Tidak Ada jika tidak ditemukan kecocokan. Anda harus memeriksa hasilnya menggunakan pernyataan kondisional (misalnya, jika cocok :).

Topik Terkait

Sumber Daya Python yang Direkomendasikan

Perluas pengetahuan Anda dengan tutorial interaktif terkait, lembar contekan, dan perbandingan kode.