How to Understand Regular Expression

How to Understand Regular Expression
User Rating: 0 (0 votes)

Paling enak memahami regex atau Regular Expression menggunakan bahasa pemrograman, kali ini saya mencoba menggunakan bahasa pemrograman PHP 😀

Karakter Awal
Untuk mencari pola “berawalan suatu string”, maka regex yang digunakan adalah karakter caping “^”. Contohnya, apakah string berawalan “abc” maka regex-nya adalah sebagai berikut.

1
2
3
4
5
6
7
8
<?php
$string = 'abcdefghijk';
if(preg_match("/^abc/", $string)) {
  echo 'String berawalan abc';
} else {
  echo 'Tidak berawalan abc';
}
?>

Tanda caping yang diikuti karakter abc berarti bahwa string harus berawalan dengan abc. Sedangkan tanda slash berikutnya menandakan bahwa karakter setelahnya tidak perlu dihiraukan.

Titik
Titik juga merupakan karakter meta yang berarti akan mengembalikan nilai true untuk semua karakter selain line break (\r dan \n), namun hanya satu karakter. Contohnya adalah sebagai berikut.

1
2
3
4
5
6
7
8
<?php
$string = 'helo hilo h lo hxlo hbelo';
if(preg_match_all("/h.lo/", $string, $match)) {
foreach($match[0] as $m) {
echo $m . '<br />';
}
}
?>

Program tersebut akan mencetak kata “helo”, “hilo”, “h lo”, dan “hxlo”, tanpa kata terakhir. Untuk memasukkan line break dalam aturan, Anda harus memberikan flag “\s” di akhir regex, sama seperti cara penulisan case insensitive.

Bintang dan Tambah
Tanda bintang “*” dan tambah “+” memiliki arti yang hampir sama. Dalam regex, tanda bintang diletakkan setelah sebuah karakter, yang artinya karakter tersebut dapat ada nol atau lebih perulangan yang diharapkan dalam pola. Sedangkan untuk tanda tambah, itu berarti harus ada satu atau lebih (tidak boleh nol) karakter yang ditulis dalam aturan. Misalkan, dalam contoh program berikut.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
<?php
$string = array('rby', 'ruby', 'ruuuby');
foreach($string as $s) {
if(preg_match("/ru*by/", $s)) {
echo 'Match ru*by '.$s.'<br />';
}
if(preg_match("/ru+by/", $s)) {
echo 'Match ru+by '.$s.'<br />';
}
}
?>

Program tersebut akan menghasilkan output:
Match ru*by rby
Match ru*by ruby
Match ru+by ruby
Match ru*by ruuuby
Match ru+by ruuuby
Terlihat jelas bahwa string pertama (rby) tidak akan diterima oleh regex tanda tambah, melainkan hanya tanda bintang. Tanda tambah setelah huruf u berarti bahwa minimal ada satu huruf u.

Karakter Akhir
Berikutnya adalah mencari string dengan akhir berupa pola tertentu. Untuk mencari pola di akhir sebuah string, ada 2 cara. Cara pertama adalah menggunakan tanda dolar “$”. Namun cara ini memiliki sebuah celah kecil untuk timbul suatu bug dalam program Anda jika tidak digunakan secara benar. Sebab tanda dolar memasukkan endline “\n” ke dalam pola yang dicari, sehingga bila mencari pola “xyz” dalam string “abcxyz” dan “abcxyz\n” akan menghasilkan nilai yang sama-sama benar.
Untuk tidak memasukkan endline dalam pola, Anda bisa menggunakan regex backslash z “\z”. Contoh penggunaannya sebagai berikut.

1
2
3
4
5
6
7
8
<?php
$string = 'abc123xyz';
if(preg_match("/xyz\z/i", $string)) {
echo 'Pola berakhiran xyz ditemukan';
} else {
echo 'Pola tidak ditemukan';
}
?>

Ingat kembali bahwa “/i” hanya menandakan bahwa regex tersebut case insensitive. Karakter awal dari string juga tidak akan dihiraukan selama string tersebut memiliki akhiran yang sesuai.

Sumber : http://bisakomputer.com/tutorial-php-pengenalan-dasar-dasar-regex/

Leave a Reply

Your email address will not be published. Required fields are marked *

*

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>