™ Warning Jangan lupa comment dan Follow Blog Saya... Tinggalkan pesan di Chat Box© Terima kasih!!! By:Aditya Nugraha TKJ© ™ Welcome To My Blog Aditya Nugraha ™: Mengenal Regular Expression (RegEx) Chrome Pointer

Sabtu, 05 Maret 2022

Mengenal Regular Expression (RegEx)



Regular Expression atau yang lebih sering disebut regex merupakan sebuah teknik yang digunakan untuk mencocokan string teks, seperti karakter tertentu, kata-kata, atau pola karakter. RegEx memiliki 2 fungsi utama yakni mencari dan mengganti, mencari suatu pola tertentu dalam text lalu menggantinya menjadi pola yang lain.

Regular Expression digunakan oleh banyak teks editor, utilities, dan bahasa pemrograman untuk pencarian dan memanipulasi teks berdasarkan pola. Misalnya, Perl, Ruby dan Tcl memiliki engine Regular Expression yang kuat dibangun pada syntax mereka.

Sejarah RegEx
Tahun 1950an, Stephen Cole Kleene seorang ahli matematika membuat sebuah model pattern string menggunakan notasi matematika, yang disebut regular sets. Ken Thompson mengimplementasikan notasi tersebut ke dalam text editor buatannya, QED, untuk pencarian string dengan pola tertentu. Dia jg menambahkan fitur tersebut ke dalam ed, sebuah editor text dalam sistem operasi unix. untuk pencarian string dalam ed menggunakan pattern, perintahnya: /g /re /p (/g : globally, /re : regular expression, /p : print) yang maksudnya adalah pencarian global baris2 dalam sebuah file yang memiliki pola tertentu, dan ditampilkan/cetak/print. Istilah Grep akhirnya digunakan sebagai nama sebuah program atau tool dalam sistem operasi unix untuk fungsi yang sama yakni pencarian string.

Prinsip Kerja RegEx

Engine RegEx terdiri dari 2 jenis Text-directed engine dan regex-directed engine atau ada juga yang mengatakan DFA (Deterministic Finite Automaton) dan NFA (Nondeterministic Finite Automaton) engines. Namun jenis mesin engine yang lebih banyak diminati adalah regex-directed engine, disamping itu featurenya lebih hebat dari text-directed engine.
Misalnya saja kita mencocokan kata “regex” dengan kata “belajar regex sekarang”, pertama-tama regex akan memulai mencocokan karakter pertama yaitu huruf “R” dengan “B”, karena tidak cocok maka akan dilanjutkan ke tempat selanjutny yaitu “R” dengan “E”, karena masih belum cocok juga proses ini akan terus berlanjut, hingga akhirnya menemukan hurup “R” yaitu di posisi ke-7, hasil ini akan disimpan di memori bahwa telah valid pada posisi ke-7, kemudian akan meneruskan langkah selanjutnya mencocokan hurup “E” dengan ” ” dan ternyata tidak cocok, engine akan mulai melakukan pencocokan kembali. Karena huruf “E” tidak ditemukan maka kali ini engine akan kembali menggunakan huruf “R” dan dicocokan pada posisi ke-9 yakni huruf “R”. Karena valid, engine menggunakan huruf berikutnya yakni huruf “E” dan dicocokan dengan posisi ke-10 yakni huruf=”E”. Proses ini akan terus diulang hingga mencapai posisi akhir suatu himpunan string. Nah jika kata “regex” ditemukan oleh kata “belajar regex sekarang” maka engine akan melaporkan bahwa Regular Expression telah valid, meskipun masih ada karakter yang belum di validasi (kata “sekarang”). Itu adalah cara kerja NFA yang lama, berbeda dengan mesin NFA yang sekarang, sudah lebih baik, yaitu meskipun string yang dicari telah match tetap akan diteruskan sampai benar-benar valid ditemukan. Setelah itu baru dibuat laporan sukses.
Berbeda dengan engine dari NFA, engine DFA memilik cara kerya yakni membandingkan semua karakter secara serempak, hal ini membuat total memory yang dibutuhkan lebih besar dari NFA, sehingga teknologi NFA lebih diminati.
Beberapa sistem yang telah menggunakan teknologi NFA ini diantaranya adalah Perl, Java, .NET languages, PHP, Python, Ruby dan masih banyak lagi.
Belajar Regex memang susah diawal, tapi kalo sudah bisa akan sangat menyenangkan dan membantu pekerjaan kita sehari-hari. Tidak hanya programmer saja perlu mengenal Regex, orang awam juga perlu karena manfaatnya bakalan besar sekali misalnya mencari file .doc, .pdf atau yang lainnya pada sistem operasi windows.

0 komentar:

Poskan Komentar


Get this widget!