Jumat, 15 Maret 2013

Pemrograman: Regular Expression





Regular Expression atau lebih di kenal dengan sebutan ReGex merupakan suatu notasi fleksibel dan ringkas untuk mencari dan menggantikan pola teks, fungsi utama ReGex itu sendiri adalah mencari dan mengganti pola text. Notasi Regular Expression terdiri dari dua jenis karakter dasar, yaitu karakter teks literal (normal) dan metakarakter. Karakter normal menyatakan bahwa teks harus eksis di string target, sedangkan metakarakter menyatakan teks dapat bermacam-macam di string target. Regular Expression memungkinkan kita menguraikan sejumlah teks guna menemukan pola karakter spesifik. Selain itu, Anda juga bisa mengganti, memodifikasi, atau menghapus suatu substring dengan cepat dan akurat, sesuai kriteria pola yang kita inginkan. Hampir semua bahasa pemrograman mengimplementasikan regular expression.

Sintaks Regular Expression
? --> Menggunakan atau tidak 1 karakter sebelum '?'. contoh ba? mewakili "b" atau "ba".
+ --> Mengulang atau tidak 1 karakter sebelum '+' sebanyak takterhingga. contoh ba+ mewakili "ba", "baa", "baaa", dst.
* --> Hampir sama dengan '+' hanya saja 1 karakter sebelum '*' bisa tidak digunakan. contoh, ba* mewakili "b", "ba", "baa", "baaa", dst.
| --> Pilihan alternatif pola. contoh, abc|def mewakili "abc" atau "def".

. --> 1 karakter apa saja. contoh, a.c mewakili "abc","acc","adc" dst.
[] --> Tempat untuk menyipan option atau range karakter. contoh [abc]a mewakili "aa","ba","ca" atau [0-9] mewakili karakter angka 1 s/d 9 dan [a-zA-Z] mewakili karakter a s/d Z dan A s/d Z.
[^ ] --> Semua karater di dalam "[]" yang di awali dengan "^" artinya bukan. contoh [^ab]c mewakili "cc","dc","ec" dst. atau tidak diawali dengan 1 karakter a atau b
^ --> Pencocokan pola di mulai di awal kalimat atau kata. contoh ^[ram]ahmat tidak cocok untuk kata "karahmat".
$ --> Pencocokan pola di ujung kalimat atau kata. contoh [ram]ahmat$ tidak cocok untuk kata "rahmatul". ^ dan $ bisa di kombinasikan untuk memaksa pengecekan pola dari awal sampai akhir kalimat atau kata.
{} --> Berfungsi mengset pengulangan. contoh [123]{3} mewakili "111","222","333"
\ --> Membuat makna literal. contoh a\+ mewakili "a+" bukan "a","aa","aaa" dst
() --> Pengkelompokan, hasil keluaran berupa array.

karakter escape di dalam regular expression,
\a : Karakter bell (alarm)
\b : Backspace
\t : Tabulator
\r : Return (carriage return)
\v : Tab vertikal
\f : Pindah halaman (form feed)
\n : Baris baru (line feed)
\e : Escape
\w : Sesuai dengan semua karakter atau kata, ekuivalen dengan [a-zA-Z_0-9].
\W : Sesuai dengan non-karakter, ekuivalen dengan [^a-zA-Z_0-9].
\s : Sesuai dengan karakter kosong, ekuivalen dengan \f, \n, \r, \t, dan \v.
\S : Tidak sesuai dengan semua karakter kosong.
\d : Sesuai dengan angka antara 0 sampai 9.
\D : Tidak sesuai dengan angka antara 0 sampai 9.

Contoh Penerapan Pencarian dengan Regex
[ PHP ]

$myString="banyak event di gelar di tahun 2009 khsusunya di ibukota jakarta.";
$Pola="/^.+tahun\s[0-9]{4}.+$/";
if (preg_match($Pola,$myString)) echo "Terdapat pola pada mystring";
// result Terdapat pola pada mystring
// karena pada kalimat myString memiliki kata tahun 2009

?>

[ Bash/Shell ]


[ram@sonpc]$ ls | grep "^s.*\.php" (Menapilan semua file PHP yang namanya berawalan "s")

[ Javascript ]
function SusunanNoTelp( phone ) {
PolaPhoneNumb = /^\(\d\d\d\) \d\d\d-\d\d\d\d$/;
if( !phone.match( PolaPhoneNumb ) ) {
alert( ‘Please enter a valid phone number’ );
return false;
}
return true;
}
SusunanNoTelp ('(021) 100-1000'); // Telp Numb Valid

[ Perl ]
open ("IDLIST","/home/ram/info.log");
while (){
@getid=$_=~/(\d+).*?chk/ ;
$cid= $getid[0], ++$counter if @getid;
}
close (IDLIST);
# pada contoh ini saya mengambil digit angka yang mengandung kata chk pada isi file yang tersimpan di /home/ram/info.log
# Isi seperti berikut
# 899003 testing chk
# 093487 percobaan chk
# 099883 latihan lbl // yang ini tidak sesuai pola


Selamat Mencoba.




 sumber : http://perpus.kampoengti.com/article/121109202381107/penerapan-pola-regular-expression

Tidak ada komentar:

Posting Komentar