SURIANI D121181316_Regular Expression (Regex)
Aplikasi Pemanfaatan Regular Expression (Regex)
Regular Expression atau biasa disingkat regex, adalah suatu metode untuk mengenali atau mendeteksi suatu pola tertentu pada suatu string.
Dengan menggunakan regex, kita bisa mendeteksi pola string seperti email, hashtag, link dan pola-pola kompleks lainnya dengan hanya satu ekpresi saja.
Ia juga merupakan metode standar dan independen, tidak mengenal bahasa pemrograman. Kita bisa mengimplementasi regex di berbagai macam bahasa pemrograman: termasuk PHP.
Regular expressions terdiri dari dua tipe:
- literal characters dan
- metacharacters
Regular Expression juga menyediakan beberapa special karakter yang dapat digunakan untuk mencocokan karakter dengan pola-pola tertentu. Perlu diingat bahwa RE adalah case sensitive.
1. Wildcard
Simbol titik “.” Disebut dengan wildcard dimana tanda ini dapat cocok dengan satu karakter apapun. Contohnya jika RE ‹‹ n.p ››maka kata yang akan cocok dengan RE tersebut bisa berupa nlp, nap, nup, n3p, n0p, dst.
2. Optionality
Dengan menggunakan symbol tanda tanya “?” untuk menandakan bahwa regular expression yang diberikan sebelum symbol tersebut bersifat optional. Contohnya adalah RE ‹‹ colou?r ›› maka kata yang dapat cocok dengan pola tersebut adalah colour dan color (dimana u bersifat opsional). Sama juga dengan RE ‹‹ e-?mail ›› dimana kata yang dapat cocok adalah e-mail dan email.
3. Repeatability
Ada dua jenis perulangan yang dapat digunakan, yaitu dengan menggunakan
tanda “+” dan “*”. Tanda “+” menandakan bahwa RE yang diberikan sebelum
symbol tersebut dapat diulang. Sebagai contoh ‹‹ coo+l ›› dapat cocok
dengan kata cool, coool, coool, dst. Contoh lainnya adalah dalam RE ‹‹
.+ed ›› sama dengan mencari kata yang berakhiran dengan kata “ed”.
Sedangkan tanda “*” menandakan bahwa RE yang diberikan sebelum symbol
tersebut bersifat opsional atau dapat berulang. Jika menggunakan contoh
RE diatas yaitu ‹‹ coo*l ›› maka kata yang dapat cocok adalah kata col,
cool, coool, dst. Contoh lainnya adalah kata ‹‹ .* oo .* ›› berarti
mencari semua kata yang terdiri dari minimal 2 karakter o.
4. Choice
Dengan menggunakan symbol kurung siku buka dan tutup “[ ]” maka pola
kata yang akan cocok akan terbatas pada RE yang akan diberikan didalam
symbol tersebut. Contohnya adalah ‹‹n[a,l,o]p›› dimana berarti kata yang
dapat cocok adalah nap, nlp, dan nop saja.
5. Range
Tanda “-“ digunakan untuk menunjukkan suatu range, misalnya kata yang
dapat cocok dari RE ‹‹n[a-z]p›› adalah semua kombinasi dari huruf a-z
(nap, nbp, ncp, dst.). Contoh RE untuk mencari kata dimana kata tersebut
dimulai dengan huruf capital adalah: ‹‹ [A-Z][a-z]*››
6. Complementation
Tanda “^” digunakan untuk membuat makna kebalikannya (negasi). Contohnya
RE ‹‹ [aiueo] ›› adalah RE untuk menghasilkan karakter vocal, tetapi
jika kita menggunakan tanda tersebut menjadi ‹‹ ^[aiueo] ›› maka
karakter yang dihasilkan adalah karakter lain selain a, i, u, e, o, atau
dengan kata lain yaitu karakter konsonan saja.
7. Common special symbol
Tanda “^” dan “$” digunakan untuk mencocokan awalan dan akhiran dari
sebuah baris di dalam file. Tanda “^” memiliki dua arti. Bila tanda
tersebut digunakan menjadi sebuah awalan pada class character seperti
pada nomor 6 maka tanda tersebut berarti negasi, selain itu tanda
tersebut berarti menandakan awal dari sebuah baris.
Contohnya jika RE ‹‹ ^ [A-Za-z]+ ›› berarti mencari disetiap awal baris
kata yang terdiri dari satu atau lebih karakter A-Z (baik huruf besar
ataupun huruf kecil).
8. Other Special character
Manfaat Regex dalam Pemrograman:
1. Regex untuk Validasi Data
Seperti contoh kasus password tadi, regex digunakan untuk matching atau pencocokan teks.
Pertama-tama, kita harus mendefinisikan pola regex untuk data yang valid. Kemudian, kita lakukan pencocokan dengan pola tersebut.
2. Regex untuk Pencarian
Contoh penerapan regex untuk pencarian sebenarnya hampir sama dengan validasi data.
Pola regex dimasukan dalam kata kunci, lalu dicocokan dengan database atau teks.
Contoh program yang menerapkan ini adalah grep
.
Program grep
(globally search for a regular expression and print matching lines) biasanya kita temukan di sistem operasi Unix dan Linux, bahkan ini menjadi program yang selalu ada di setiap distro Linux.
Program grep
melakukan pencarian berdasarkan pola regex yang diberikan, lalu mencetak output hasilnya.
3. Regex untuk Find and Replace
Salah satu manfaat regex yang saya suka adalah find and replace. Fitur ini membantu saya untuk mengelola teks dan konten lebih efisien.
Bayangkan saja..
Di petani kode ada ratusan konten dengan format markdown. Lalu di suatu kondisi saya ingin mengubah beberapa teks di semua konten ini.
Jika dilakukan satu-per-satu secara manual, tentu ini akan menguras banyak waktu dan tenaga.
Tapi..
Berkat regex, saya bisa melakukannya dalam hitungan detik. Cukup bikin pola pencarian dan pola untuk mengubahnya (subtitusi).
Contoh Applikasi dari Regex:
Deteksi Email
Untuk mendeteksi email, kita bisa melakukannya dengan 3 pola bagian:
- pola pertama adalah username email (sebelum tanda @). Pola ini adalah semua karakter dalam set
[a-zA-Z0-9_]
atau kita bisa singkat dengan menggunakan meta karakter\w
. - pola yang kedua adalah tanda
@
. - pola yang ketiga adalah domain. Domain terdiri dari dari karakter huruf kecil dan titik (
[a-z.]+
)
Sehingga ketika 3 pola di atas kita rangkai, kita mendapatkan pola sebagai berikut:
<?php
$regex = "/[\w]+@[a-z.]+/";
Langsung saja. Silakan buka file fungsi/deteksi-email.php
lalu buat fungsi deteksiEmail
sebagai berikut:
<?php
function deteksiEmail($input)
{
$regex = "/[\w]+@[a-z.]+/";
$timpa = "<a href='mailto:$0'>$0</a>";
return preg_replace($regex, $timpa, $input);
}
Lalu pada file index.php
, kita bisa tambahkan teks baru sebagai berikut:
<?php
$tesk3 = "Untuk informasi lebih lanjut tentang pendidikan di Surabaya,
anda bisa mengirimkan surel ke alamat dispendik@surabaya.go.id";
echo deteksiEmail($tesk3);
Maka setelah dijalankan, output yang kita dapatkan adalah sebagai berikut:
Untuk informasi lebih lanjut tentang pendidikan di Surabaya, anda bisa mengirimkan surel ke alamat dispendik@surabaya.go.id.
sekian, terima kasih:")
Komentar
Posting Komentar