Friday, October 24, 2008

Konsep Kerja Regular Expression Engine

Dalam dunia pemrogramman pastinya tidakn akan terlepas yang namanya Regex kepanjangan dari Regular Expression. kalo boleh saya katakan, Regex adalah suatu aturan tertentu yang berguna untuk menentukan valid tidaknya suatu subjek.

nah disini saya akan membahas prinsip kerja Regex engine dalam melakukan tugasnya. Mesin 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. untuk membedakan jenis engine regex ini bisa dilakukan dengan tes berikut, dengan menetapkan regex,

$subject= 'regex not';
$patern = '(regex|regex not)';
$result = preg_match($patern,$subject,$match);
var_dump($result);


bila hasil yang didapat adalah matched dengan $subject="regex", maka mesin regex tersebut bertipe regex-directed engine, sebaliknya bila matched-nya dengan $subject="regex not", maka mesin regexnya berupa tex-directed-engine 

tes tersebut saya gunakan dengan PHP, dan ternyata mesin Regex di PHP menggunaakn regex-directed engine, ya saat ini sebagian besar sistem yang ada telah menggunakan regex-directed-engine/ NFA engine.

baik, saya akan menjelaskan bagaimana regex engine bekerja misal kata yang akan dicocokan adalah "php" dengan kata "belajar phpmyadmin di php", pertama-tama regex akan memulai mencocokan karakter pertama yaitu huruf "P" dengan "B", karena tidak cocok maka akan dilanjutkan ke tempat selanjutny yaitu "P" dengan "E", karena masih belum cocok juga proses ini akan terus berlanjut, hingga akhirnya menemukan hurup "P" yaitu di posisi ke-9, hasil ini akan disimpan di memori bahwa telah valid pada posisi ke-9, kemudian akan meneruskan langkah selanjutnya mencocokan hurup "H" dengan "H" ternyata cocok, kemudian seterusnya juga masih cocok "P" dengan "P", sehingga mesin akan melaporkan bahwa regex telah valid, meskipun masih ada karakter yang belum di validasi. itu adalah cara kerja NFA yang lama, sehingga ketika anda mencocokan string "regex" dengan "regex not" akan dinyatakan valid. 

namun 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.

sedangkan mesin DFA cara kerjanya dengan membandingkan semua karakter secara serempak, hal ini membuat total memory yang dibutuhkan lebih besar dari NFA, sehingga menjadi sebab lebih diminatinya teknologi NFA ini. 

beberapa sistem yang telah menggunakan teknologi NFA ini diantaranya adalah Perl, Java, .NET languages, PHP, Python, Ruby dan masih banyak lagi.

sumber : 
http://www.regular-expressions.info/
http://www.softec.st/




No comments:

Post a Comment

Komentar anda bila perlu penjelasan (semampu saya tentunya)

silahkan login dulu atau follow blog ini untuk bisa mengisi komentar