Regular Expression Python — Part II
Eksplorasi Lanjutan Regular Expression Pemrograman Python
Pada pembahasan sebelumnya (baca disini), telah dijelaskan mengenai regular expression. Pada resume kali ini, akan dibahas lebih dalam tentang regular expression.
Review tentang regular expression:
Regular Expression merupakan sebuah notasi yang dapat digunakan untuk mendeskripsikan pola dari kata yang ingin dicari atau lebih jauh ingin diseragamkan (diganti ataupun dihapus) dengan format yang telah ditetapkan pada kasus tertentu.REGEX adalah sebuah pola (pattern) yang digunakan untuk mencari, mencocokkan, atau memanipulasi teks berdasarkan aturan tertentu. Regex sangat berguna dalam proses text processing, seperti validasi data, pencarian pola dalam string, maupun ekstraksi informasi dari teks. Dalam bahasa pemrograman Python, regex tersedia melalui library re yang menyediakan berbagai fungsi untuk melakukan pencocokan pola pada string.
Regular Expression juga menyediakan beberapa karakter yang dapat digunakan untuk mencocokan karakter atau string dengan pola-pola tertentu. Pada artikel kali ini, akan digunakan bahasa pemrograman python, untuk mengenal regex lebih lanjut.
Perbandingan Fungsi Pencarian Utama
Dalam Python, untuk memeriksa kecocokan pola ada tiga fungsi utama yang dapat digunakan. Tiga fungsi tersebut diantaranya, re.search() yang digunakan untuk memindai seluruh string dan akan berhenti pada kecocokan pertama tanpa melihat dimana posisinya. Kemudian ada re.match(), ini digunakan untuk mencari kecocokan pola ketika berada di awal string. Selain itu, ada re.fullmatch() yang digunakan untuk memastikan apakah seluruh string dari awal hingga akhir sesuai dengan pola yang telah ditentukan.
Get Farah Nisrina’s stories in your inbox
Join Medium for free to get updates from this writer.
Pemanfaatan Match Object
Setelah berhasil menemukan pola, sebuah fungsi akan mengembalikan sebuah match object. Objek tersebut akan menyimpan beberapa detail penting yang nantinya dapat diakses melalui metode khusus. Untuk melakukan tersebut, kita dapat menggunakan .group() untuk mengambil teks yang cocok, .start() dan .end() untuk mengetahui indeks posisinya, dan ada .span() yang dapat memberikan rentang indeks awal hingga akhir dalam satu langkah. Dengan adanya hal ini, dapat mempermudah kita untuk memetakan lokasi data teks dalam jumlah yang besar.
Teknik Pengelompokan (Grouping)
Dengan menggunakan grouping, dapat memungkinkan kita untuk memecah hasil tangkapan regex menjadi bagian-bagian yang lebih kecil menggunakan tanda kurung (). Selain itu, kita juga dapat menggunakan nomor indeks seperti .group(1) atau .group(2), kita juga bisa memberikan nama pada grup tersebut dengan menggunakan sintaks(?P<nama_grup>...) supaya lebih deskriptif. Melalui penamaan grup, kita bisa langsung mengonversi hasil tangkapan regex menjadi sebuah dictionary melalui fungsi .groupdict(), untuk membantu pengolahan data agar lebih terstruktur.
Ekstraksi Banyak Data (findall vs finditer)
Jika fungsi search() hanya digunakan untuk mengambil temuan pertama, maka ada fungsi re.findall() dan re.finditer() yang digunakan untuk menangkap semua kecocokan dalam satu string. Perbedaan antara re.findall() dan re.finditer() adalah sebagai berikut, re.findall() akan mengembalikan hasilnya dalam bentuk list(daftar) yang berisi string atau tuple. Untuk re.finditer() sendiri jauh lebih informatif karena akan mengembalikan sebuah iterator berisi Match Objects. Hal ini memungkinkan kita untuk tidak hanya mendapatkan teksnya saja, tetapi juga posisi (index) dari setiap temuan tersebut.
Fitur Lanjutan: Assertion & Word Boundary
Untuk pencarian yang lebih presisi, kita bisa menggunakan teknik Assertion. Positive Lookbehind (?<=…) memungkinkan kita mencari teks yang didahului pola tertentu tanpa memasukkan pola tersebut ke hasil. Sebaliknya, Positive Lookahead (?=…) digunakan untuk mencocokkan teks yang diikuti oleh pola tertentu. Selain itu, terdapat Word Boundary \b yang berfungsi sebagai pembatas kata. Dengan \b, kita bisa memastikan bahwa pola yang dicari adalah satu kata utuh, bukan bagian dari kata lain.
Manipulasi String
Selain untuk pencarian, regex juga sangat berguna dalam memodifikasi teks. Fungsi re.sub() dapat digunakan untuk mencari pola tertentu dan langsung menggantinya dengan string lain secara efisien. Selain itu, jika kita perlu memecah sebuah teks panjang berdasarkan pembatas yang kompleks (seperti koma, titik koma, atau simbol lainnya sekaligus), kita bisa memanfaatkan fungsi re.split() yang akan mengembalikan hasilnya dalam bentuk list.




