usahawan-maju | Apa Regex dan Tutorial Cara Belajar Regex - Pada mulanya saya cukup bingung dengan yang dimaksud apa itu regex. Dari cerita yang saya dapat, kemampuanya sangat menarik untuk dipelajari, dan bahkan sangat penting. Regex merupakan kependekan dari regular expression. Bentuk bahasanya sangat sedehana, namun bisa mengenali sagala susunan charakter.
Ahirnya karena saya sangat penasaran apa yang diajarkan temen saya, kemudian saya mencoba mencari informasi tambahan di internet agar berbagai keterangan dari sisi sudut pandang yang lain saya dapat dan bisa saya serap kedalam bahasa saya sendiri. Berikut catatan dari apa yang saya dapatkan.
Bersumber dari artikel berjudul kuasai regex hari ini.
Arti ? di regex berbeda dengan di wildcard. Di regex, ? berarti huruf atau kelompok di kiri bersifat opsional. Dapat juga dibaca sebagai “boleh ada atau boleh tidak.” Beberapa contoh:
Silah?kan, cocok dengan silakan atau silahkan.(silah)?kan, cocok dengan silahkan atau dengan kan saja. advi([sc]es?|sory), cocok dengan advice, advise, advices, advises, atau advisory. Regex ini berbunyi “empat huruf advi diikuti dengan salah satu dari: a) huruf s atau c yang diikuti e dan boleh diikuti s; atau b) deretan huruf sory.”
if ($nama =~ /ste(v|f|ph)[ea]n(us)? h[ae]ri?[jy]anto/) {
# lakukan sesuatu di sini
}
Berikut ini empat lagi karakter meta dasar lain.
1. . (titik) cocok dengan satu karakter apa pun;
2. (bintang) untuk mengartikan “nol atau lebih”;
3. + (plus) untuk mengartikan “satu atau lebih”;
4. ^ (tanda pangkat) dan $ (dolar) untuk penjangkaran.
~ Titik
Titik atau dot adalah lambang yang cocok dengan semua karakter tunggal. Beberapa contoh:
bat.k cocok dengan batak, batok, dan juga batbk, bat+k, bat8k, dsb. Namun tidak cocok dengan batrak (karena tr adalah dua karakter) atau batk (nol karakter).
bat.?k sama seperti sebelumnya, namun cocok pula dengan batk (nol karakter) karena titik diikuti oleh tanda opsional.
b...k cocok dengan lebih banyak lagi string, mulai dari batak, buruk, bilik, dan semua potongan string yang terdiri dari 5 karakter, diawali dengan b dan diakhiri dengan k.
~ Nol-Atau-Lebih, Satu-Atau-Lebih
Kalau tanda optional ? bisa dibilang sebagai “nol-atau-satu”, maka * melambangkan “nol-atau-lebih” dan + melambangkan “satu-atau-lebih” dari karakter atau kelompok yang berada tepat di kiri tanda tersebut. Beberapa contoh:
[0-9]+, cocok dengan deretan angka.
.+, cocok dengan satu atau lebih karakter apa pun, atau cocok dengan string yang “tidak kosong”.
.*, cocok dengan nol atau lebih karakter apa pun, atau cocok dengan string apa saja, termasuk juga yang kosong.
h?(ah|eh)+!*, berbunyi “boleh diawali huruf h, terdiri dari deretan ah atau eh, dan boleh diakhiri dengan deretan tanda seru.” Cocok dengan string seperti eh, hahahah!, atau ehehahehah!!!. Tidak cocok dengan string seperti haha, hhah!, maupun h!.
~ Jangkar
^ dan $ masing-masing dapat disebut sebagai “harus di awal” dan “harus di akhir.” Mengapa disebut jangkar? Kedua karakter ini tidak melambangkan karakter mereka sendiri, ingat, keduanya adalah karakter meta. Bahkan ^ dan $ di sini tidak melambangkan karakter apapun, melainkan mensyaratkan posisi atau penambatan pola ke string yang ingin dicocokkan. Itulah sebabnya pasangan karakter meta ini disebut anchor, atau jangkar. Beberapa contoh:
456 cocok dengan 456, 456789, maupun 123456 karena ketiganya mengandung pola tersebut.
^456 cocok dengan 456, 456789, namun tidak cocok dengan 123456.
^456$ hanya cocok dengan 456, tidak dengan 456789 maupun 123456.
Pola seperti [0-9][0-9] dan pola-pola lain di contoh sebelumnya bersifat tidak terjangkar karena tidak diberi ^ maupun $. Jadi di mana pun pola tersebut ditemukan di dalam string—di awal, tengah, maupun ujung akhir—tetap akan cocok. Sementara jika sebuah pola terjangkar, maka hanya cocok di awal atau di akhir atau awal-dan-akhir, bergantung pada jenis jangkar yang diberikan pada pola.
Jadi kembali ke kasus variasi ejaan nama, regex kita berbunyi demikian: “Tiga huruf ste diikuti salah satu dari v, f, atau ph; diikuti salah satu dari e atau a; diikuti huruf n; boleh diikuti ‘us’, tapi boleh juga tidak. Diikuti spasi dan deret tiga huruf har; boleh diikuti huruf i, dapat juga langsung diikuti salah satu dari huruf j atau y. Terakhir, diikuti oleh deret empat huruf anto.” Karena ringkas, seluruh kalimat keinginan kita tadi dapat dinyatakan hanya dengan satu pola regex! Dengan regex, kita dapat mempersingkat mungkin puluhan baris if-or menjadi hanya satu baris kode PHP:
if (preg_match("/ste(v|f|ph)[ea]n(us)? h[ae]ri?[jy]anto/", $nama)) {
# lakukan sesuatu di sini
}
Demikian catatan pencarian penjelasan tentang apa yang dimaksud dengan regex. Mulai dari simbol yang mewakili expressi regular yang mampu diterjemahkan kedalam susunan karakter lain yang sama. Semoga artikel ini membantu dan bermanfaat,,,