Kata Pengantar
Puji syukur kami panjatkan kehadirat Tuhan Yang Maha Esa karena dengan
rahmat, karunia, serta taufik dan hidayah-Nya kami dapat menyelesaikan makalah
tentang Regular Expression.
Kami sangat berharap makalah ini dapat berguna dalam rangka menambah
wawasan serta pengetahuan kita mengenai Regular Expression pada PHP. Kami
juga menyadari sepenuhnya bahwa di dalam makalah ini terdapat kekurangan dan
jauh dari kata sempurna. Oleh sebab itu, kami berharap adanya kritik, saran dan
usulan demi perbaikan makalah yang telah kami buat di masa yang akan datang,
mengingat tidak ada sesuatu yang sempurna tanpa saran yang membangun.
Semoga makalah sederhana ini dapat dipahami bagi siapapun yang
membacanya. Sekiranya laporan yang telah disusun ini dapat berguna bagi kami
sendiri maupun orang yang membacanya. Sebelumnya kami mohon maaf apabila
terdapat kesalahan kata-kata yang kurang berkenan dan kami memohon kritik dan
saran yang membangun dari Anda demi perbaikan makalah ini di waktu yang akan
datang.
Daftar Isi
1
Kata Pengantar............................................................................................................... i
Daftar Isi...................................................................................................................... ii
BAB I Pendahuluan........................................................................................................ 1
1.1
Latar Belakang.................................................................................................. 1
1.2
Tujuan............................................................................................................. 1
1.3
Rumusan Masalah.............................................................................................. 2
BAB II Pembahasan....................................................................................................... 3
2.1
Pengertian........................................................................................................ 3
2.2
A.
Karakter Awal.................................................................................................... 4
A.
Case Sensitive.................................................................................................... 4
B.
Karakter Akhir................................................................................................... 5
C.
Meta Character.................................................................................................. 6
D.
Kurung Siku...................................................................................................... 7
E.
Titik................................................................................................................. 8
F.
G.
Tanda Tanya.................................................................................................... 10
H.
Kurung Kurawal........................................................................................... 11
Kurung Biasa.................................................................................................. 13
B.
Karakter Pipe.................................................................................................. 14
preg_replace()................................................................................................. 18
B.
preg_match_all().............................................................................................. 18
BAB I Pendahuluan
1.2 Tujuan
a) Agar kita bisa mengetahui tentang Regular Expression.
b) Agar kita dapat menggunakan perintah perintah Regular Expression.
c) Dapat Membuat program yang berhubungan dengan perintah Regular
Expression
1
BAB II Pembahasan
2.1 Pengertian
Berbagai macam pencarian pola sebenarnya dapat diselesaikan dengan cepat
menggunakan apa yang disebut dengan Regex. Regex merupakan singkatan dari
Regular Expression, yaitu sebuah metode untuk mencari suatu pola dalam sebuah
string. Regex sendiri sebenarnya juga merupakan string. Hanya saja karakter dalam
string tersebut diterjemahkan sebagai suatu pola dan aturan tertentu. Misalkan,
string yang diawali oleh tanda caping ^ berarti string tersebut harus diawali oleh
karakter yang mengikuti tanda caping tersebut.
Syntax regex pada setiap bahasa pemrograman berbeda-beda. Dalam PHP,
awalnya dikenal fungsi ereg(), eregi(), ereg_replace(), dan eregi_replace(), untuk
memanfaatkan regex ini. Namun fungsi-fungsi tersebut sudah tidak dapat
digunakan lagi sejak PHP versi 5.3.0 karena sudah diimplementasikan lagi fungsi
yang lebih baik lagi.
Saat ini bisa menggunakan fungsi preg_match() untuk menggunakan regex.
Fungsi lainnya yang tersedia adalah preg_replace(), preg_filter(),
preg_match_all(), dan preg_split(). Semuanya terletak dalam library pcre.php.
PCRE adalah singkatan dari Perl Compatible Regular Expression, yang artinya
regex ini dapat digunakan pula pada bahasa pemrograman Perl.
Tanda caping yang diikuti karakter abc berarti bahwa string harus berawalan
dengan abc. Sedangkan tanda slash berikutnya menandakan bahwa karakter
setelahnya tidak perlu dihiraukan.
A. Case Sensitive
Namun regex tersebut tidak berlaku jika satu atau lebih karakter abc pada
awal string yang akan dicari merupakan huruf kapital. Terkadang Anda hanya
perlu mencari pola karakter tersebut, tanpa memperhitungkan besar kecilnya.
Untuk tidak menghiraukan case sensitivity, Anda bisa menambahkan delimeter
/i di belakang regex, menjadi seperti berikut.
Dengan demikian, kapital atau tidaknya pola yang dicari tidak akan berpengaruh.
B. 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.
C. Meta Character
Untuk pencarian pola yang mengandung karakter meta, perlu diberikan
perlakuan tersendiri. Karakter meta adalah karakter yang digunakan sebagai
penanda Regex. Seperti contoh sebelumnya, salah satu contoh karakter meta
adalah ^ dan $. Selain itu, beberapa karakter lainnya adalah titik ., asterik
*, plus +, tanda tanya ?, seluruh jenis tanda kurung, pipe |, dan
backslash \.
Karena merupakan karakter meta, karakter ini tidak akan dibaca sebagai
pola,
sebagai karakter yang dicari dalam pola, Anda harus menambahkan karakter
backslash \ sebelum karakter meta. Backslash disebut juga sebagai escape
character.
Sebagai contoh, jika mencari pola 2+7 dalam sebuah string, maka bisa
ditulis sebagai berikut.
D. Kurung Siku
Hampir semua karakter meta tidak akan berfungsi sebagai karakter meta jika
di dalam kurung siku ini, melainkan hanya menjadi karakter biasa. Sehingga
bila ingin mencari pola yang mengandung huruf a, b, c, dan $, maka cukup
menuliskannya [abc$] saja, tanpa escape character.
Pengecualian untuk karakter caping ^. Jika diletakkan di awal kurung, itu
berarti bahwa yang dicari adalah karakter yang bukan dalam kurung siku
tersebut. Sebagai contoh, jika ingin mencari pola selain huruf bgjk dalam
string, maka harus ditulis sebagai berikut.
E. 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.
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.
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.
Terlihat jelas bahwa string pertama (rby) tidak akan diterima oleh regex
tambah,melainkan hanya tanda bintang. Tanda tambah setelah huruf u tanda
berarti bahwa minimal ada satu huruf u.
G. Tanda Tanya
Tanda tanya ? merupakan karakter meta untuk aturan regex yang berarti
karakter tersebut opsional, boleh ada boleh tidak. Salah satu contoh kasus
penggunaan karakter ini adalah untuk mendeteksi nomer telepon. Kadang ada
yang memasukkan kode area dengan pemisah karakter minux -, kadang ada
yang tidak. Sebagai contoh, dalam program berikut.
10
Seandainya pun karakter minus dihapus, pola tersebut masih diterima oleh
regex karena tanda minus bersifat opsional.
H.Kurung Kurawal
Kurung kurawal {} merupakan karakter meta yang melambangkan jumlah
karakter atau pola yang harus ada. Biasanya kurung kurawal disertakan setelah
kurung siku, yang berarti harus terdapat beberapa karakter yang terdapat dalam
kurung siku, sejumlah angka yang tertulis di kurung kurawal. Sebagai contoh,
misalkan dalam suatu nomer telepon harus terdapat pola angka nol sebanyak
tiga kali, maka penulisan programnya sebagai berikut.
11
seperti format lainnya, dalam regex juga dikenal escape character khusus untuk
alfabet, angka, dan linebreak. Berikut ini adalah daftar urutan karakter khusus yang
berlaku pada regex.
a)
b)
c)
d)
e)
seperti [a-zA-Z0-9_]
f) \W Untuk semua karakter non alpha-numeric, sama seperti [^a-zA-Z09_]
Contoh penggunaannya sebagai berikut. Misalkan Anda sedang mencari
string dengan pola yang diawali sebuah angka, kemudian 3 huruf, dan diakhiri oleh
sebuah angka maupun huruf. Maka, penulisannya adalah:
A. Kurung Biasa
Sama seperti dalam matematika, tanda kurung biasa () digunakan
untuk mengelompokkan aturan-aturan regex lainnya. Tanda kurung paling
13
dalam akan diolah terlebih dahulu, setelah itu baru tanda kurung yang
diluarnya. Penggunaannya bisa bermacam-macam, Anda bisa melihatnya
pada contoh-contoh selanjutnya.
B. Karakter Pipe
Karakter pipe atau garis tegak lurus | menyatakan operasi atau.
Bila digabungkan dengan tanda kurung, Anda bisa menentukan dalam string
harus terdapat suatu pola tertentu. Misalkan, format hanya menerima nomer
telepon regional Jakarta, Surabaya, dan Malang, dengan jumlah digit enam
atau tujuh. Maka Anda bisa menuliskannya sebagai berikut.
Hasil regex di atas, nomer ke-1 sampai dengan ke-3 merupakan pola
yang sesuai. Nomer ke-4 tidak sesuai karena tidak diawali kode area yang
ditentukan. Nomer ke-5 tidak sesuai karena hanya mengandung 5 digit
nomer setelah kode area.
adalah beberapa modifier lain yang bisa Anda gunakan sesuai kasus yang Anda
butuhkan.
a)
b)
c)
d)
e)
f)
g)
Karakter \b berarti sebagai word boundary, atau batasan sebuah kata. Ini
untuk mencegah pola yang dicari ada sebagai substring dari kata lainnya. Sebagai
contoh, untuk mencari kata aman dalam kalimat halaman ini telah aman, maka
harus ditulis sebagai berikut.
Semua assertion harus diawali oleh escape character, untuk menandakan bahwa
yang digunakan adalah assertion.
2.5 Delimeter
Pada contoh-contoh sebelumnya, delimeter yang digunakan adalah tanda
slash /. Delimeter juga dapat diganti untuk kasus tertentu, terutama bila Anda
memerlukan karakter slash dalam pola yang dicari. Memang bisa menggunakan
escape character, tapi jika cukup banyak tanda slash yang diperlukan seperti pada
pola URL, maka akan cukup merepotkan.
Beberapa delimeter lain yang bisa digunakan adalah /, @, #, ` (bukan tanda
petik), ~, %, &, tanda petik satu dan dua. Sehingga, Anda juga bisa menulisnya
seperti berikut.
16
Untuk melihat karakter atau kata di depan kata yang dicari, Anda bisa
menggunakan regex (?=). Perhatikan contoh berikut ini.
Maka yang akan keluar adalah pernyataan salah. Hal ini karena tidak
ada kata pc yang tidak diikuti oleh media, sedangkan yang ada yaitu
pcmedia langsung.
Untuk melihat ke belakang, regex yang digunakan adalah (?<=).
Tujuannya sama, mencari pola dengan awalan pola lainnya.
17
A. preg_replace()
Fungsi ini sama dengan preg_match(), hanya saja fungsi ini akan
langsung mengganti pola yang ditemukan dengan string lain. Fungsi ini
menerima minimal 3 parameter, yaitu regex, string pengganti, dan string
yang akan dicari.
B. preg_match_all()
Berbeda dengan preg_match() yang langsung akan mengembalikan
nilai benar jika menemukan satu saja pattern yang sesuai. Fungsi ini akan
mengembalikan jumlah pattern yang ditemukan, serta dapat mengembalikan
apa saja pattern yang ditemukan melalui parameter ketiga. Karena itu fungsi
ini membutuhkan minimal 3 parameter yaitu regex, string yang akan dicari,
serta array yang akan menyimpan semua pola yang ditemukan.
18
3.1 Kesimpulan
Dalam menjalankan program menggunakan PHP, perintah
Regular Expression sangat membantu dalam beberapa
kasus,sehingga membuat program lebih efisien.
19