Saturday, April 17, 2010

Notasi Regular Expression / Regex

Mao coba buat catetan tentang notasi regular expression ah..

Ada yang belum tau regular expression/ Regex (bahasa singkatnya) ?
Regex adalah sebuah pattern matching, yaitu notasi yang digunakan untuk mencocokkan teks dan data, dan memanipulasinya. Biasanya lebih sering digunakan untuk string.
Contoh: validasi input email/password, searching, replace.
Dengan menggunakan Regex, kita dapat dengan mudah menemukan pola karakter spesifisik dari sejumlah teks. Kita juga dapat dengan mudah mengganti, memodifikasi atau menghapus suatu substring dengan cepat dan akurat sesuai dengan Regex yang telah kita buat.


----------
Assertion
----------
^ = awal kata
$ = ahkir kata
\b = batas kata
\B = batas non kata


-----
Atom
-----
. = sembarang karakter kecuali newline
[] = salah satu karakter yang di dalam kurung
[^ ] = bukan salah satu karakter yang di dalam kurung
| = kemunkinan dari suatu string
() = sembarang regular experssion yang cocok

----------
Quantifier
----------
* = nol atau lebih instan atom
+ = satu atau lebih instan dari atom
? = nol atau satu instan dari atom
{n} = n instan dari atom
{n,} = sedikitanya n instan dari atom
{n,m} = sedikinya n dan paling banyak m
n-m = n sampai m


------------------------
Symbol / karakter khusus
------------------------
\d = sembarang digit
\D = sembarang non digit
\n = newline
\r = carriage return
\t = tab
\f = formfeed
\s = karakter white space
\S = karakter non white space
\w = alfanumerik
\W = karakter non alfanumerik


Sekarang coba penerapannya dalam code (PERL n PHP)

PERL:

#!/usr/sbin/perl
$url = "http://yosepgustri.blogspot.com";
if ($url =~ /^http:\/\/yosepgustri\.(.+)$/i)
{
print $1;
}
else
{
die "wrong\n";
}

hasilnya dari program diatas yaitu yosepgustri.blogspot.com

PHP:

$url = "http://yosep.blogspot.com";
if (@eregi("^http:\/\/yosepgustri\.(.+)$", $url, $hasil))
{
echo $hasil[1];
}

Oke, sekarang coba contoh Regex untuk menentukan pola/pattern email (validasi email)
\b[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}\b

Untuk penjelasannya, analisa sendiri ya dari tabel yang diatas :p


Contoh lain dalam PHP:

if (ereg (”^[[:digit:]]+$”, $baris)) {
    // .. what to do if true
echo “Benar”;
} else {
    // .. what to do if false
echo “Salah”;
}
?>

Penjelasan:
Disin kita menggunakan fungsi ereg yang berarti case sensitif, lalu kita juga menggunakan [[:digit:]] sebagai alternatif lain dari Regular Expression.

Berikut daftar tabel nya:
Name Description
[[:alnum:]] All alphanumeric characters [a-zA-Z0-9]
[[:alpha:]] All alphabetic characters [a-z]
[[:blank:]] Tab and space [t ]
[[:cntrl:]] All the control characters
[[:digit:]] All decimal digits [0-9]
[[:graph:]] All printable characters except space
[[:lower:]] All lowercase letters [a-z]
[[:print:]] All printable characters
[[:punct:]] Punctuation marks [.,;:-]
[[:space:]] All whitespace characters
[[:upper:]] All the uppercase letters [A-Z]
[[:xdigit:]] The set of hexadecimal digits

Semoga informasi ini berguna buat yang mao belajar Regex 

No comments:

Post a Comment