Regular Expressions
Pencarian suatu teks atau bentuk teks dalam sebuah dokumen merupakan hal yang biasa. Di word maupun pembacaan pdf lainnya menggunakan perintah CTRL + F untuk mencari sebuah teks pada dokumen. Lalu bagaimana jika bentuk yang dicari beragam? Contoh mencari alamat email. Kita ingin mengambil semua alamat email yang ada '@' di tengah lalu diikuti domain '.com' di akhir email. Secara spesifik seperti itu bagaimana cara mencarinya? Dari ini lah muncul regular expression.
Silahkan di lihat dahulu table regex berikut
Bentuk | Fungsi |
\d | Angka |
\D | Bukan angka |
\w | Karakter apapun |
\W | Bukan karakter apapun |
\s | Terdapat spasi |
\S | Tidak terdapat spasi |
Import regex kedalam Python
import re
Buat string yang memiliki email di dalamnya
email = “Akun yang sudah tertaut email adalah Budi@gmail.com, selamat@yahoo.com, dan dodi@mail.me”
Buat bentuk \w terlebih dahulu untuk melihat seperti apa hasilnya. Gunakan re.findall() untuk mengembalikan array
hasil = re.findall('\w', email)
print(hasil)
Maka hasilnya adalah semua karakter yang ditemukan. Karena menggunakan fungsi findall() maka regex akan mencari semua kecocokan. Sekarang kita ubah ke tahap lebih spesifik. Dimana setelah karakter terdapat beberapa karakter berikutnya dan bertemu @. Buat bentuk regex berikut
hasil = re.findall('\w+@', email)
print(hasil)
Maka hasilnya kumpulan karakter yang terdapat @ di akhirnya. Tanda + adalah kemunculan karakter lebih dari sekali. Kita hampir mendekati mendapatkan alamat email yang valid. Selanjutnya buat bentuk regex berikut
hasil = re.findall('\w+@\w+', email)
print(hasil)
Hasilnya adalah alamat email tanpa domain. Tinggal sedikit lagi kita mendapatkan baris lengkap email dari string tersebut. Ganti bentuk regex tersebut seperti berikut
hasil = re.findall('\w+@\S+', email)
print(hasil)
Hasilnya sesuai yang diharapkan, kita mendapatkan alamat email secara lengkap. Bentuk \S mencari karakter apapun yang tidak mengandung spasi. Apabila bentuk string kita terdapat "test@gmail .com" maka regex diatas tidak akan menemukan email di string tersebut. Karena terdapat spasi di emailnya.
Terdapat banyak sekali bentuk regex yang menyesuaikan kebutuhan user. Lebih lengkapnya Anda dapat mengunjungi web ini sebagai panduan menggunakan regex.