Regular Expression
Regular expression adalah alat yang powerful untuk berbagai jenis manipulasi string. Regular expression adalah sebuah domain specific language (DSL) yang hadir sebagai sebuah library pada kebanyakan bahasa pemrograman, bukan hanya pada python.
Ada 2 tugas utama dari regex:
- Memverifikasi kecocokan string
contoh: sebuah string memiliki format sebuah alamat email. - Melakukan subtitusi di dalam sebuah string
contoh: mengganti semua ejaan American ke British.
Private domain-specific language biasanya digunakan untuk tujuan industri yang lebih spesifik. Regex dalam python dapat diakses menggunakan modul re, dimana itu adalah bagian dari library standar.
Setelah kita mendefiniskan regex, fungsi re.match dapat digunakan untuk menentukan apakah cocok dengan awal sebuah string. Jika cocok, match mengembalikan sebuah objek yang merepresentasikan kecocokan. Dan jika tidak maka akan mengembalikan None.
Untuk mencegah kebingungan ketika bekerja dengan regex, kita gunakan raw string dengan r”expression”.
import re
pattern = r"kerbau"
if re.match(pattern, "kerbaukerbau"):
print("Cocok")
else:
print("Tidak Cocok")
=====>
Cocok
=====>
Di atas adalah contoh untuk mencocokkan string. Jika pattern “kerbau” cocok, maka akan mencetak output “Cocok”.
Fungsi lain untuk mencocokkan pola adalah re.search and re.findall. Fungsi re.search menemukan sebuah kecocokan sebuah pola dimanapun di dalam string. Fungsi re.findall mengembalikan sebuah list dari semua substring yang cocok dengan sebuah pola.
import re
pola = r"spam"
if re.match(pola, "eggsspamsausagespam"):
print("Cocok")
else:
print("Tidak Cocok")
if re.search(pola, "eggsspamsausagespam"):
print("Cocok")
else:
print("Tidak Cocok")
print(re.findall(pola, "eggsspamsausagespam"))
=====>
Tidak Cocok
Cocok
['spam', 'spam']
=====>
Pada contoh di atas, fungsi match tidak cocok dengan pola, seperti yang dapat kita lihat pada awal string. Dan fungsi search menemukan sebuah kecocokan di dalam string.
Fungsi re.finditer mirip dengan re.findall. Hanya saja re.finditer mengembalikan sebuah iterasi, bukan sebuah list. Regex search mengembalikan sebuah objek dengan beberapa method beserta detailnya.
Method-method tersebut berisi group dimana mengembalikan string yang cocok, start and end dimana mengembalikan posisi awal dan akhir, dan span yang mengembalikan posisi awal dan akhir yang berupa tuple.
import re
cari = r"tidak"
cocok = re.search(cari, "hariinitidakhujan")
if cocok:
print(cocok.group())
print(cocok.start())
print(cocok.end())
print(cocok.span())
=====>
tidak
7
12
(7, 12)
=====>
Search & Replace
Salah satu yang paling panting dari method re yang menggunakan regex adalah sub.
re.sub(pattern, repl, string, count=0)
Method ini mengganti semua pada atribut pattern di dalam string dengan atribut repl, mengganti semua kejadian, kecuali diberikan count. Method ini mengembalikan string yang sudah dimodifikasi.
import re
str = "Nama saya Zakky. Zakky was here."
cari = r"Zakky"
ganti = re.sub(cari, "Jack", str)
print(ganti)
LANJUTKAN BACA MATERI LENGKAP