Regular Expressions

Posted on February 17th, 2024
Intermediate
...

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 

BentukFungsi
\dAngka
\DBukan angka
\wKarakter apapun
\WBukan karakter apapun
\sTerdapat spasi
\STidak 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)

Coba

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.