Anda di halaman 1dari 22

Makalah

Regular Expression pada PHP


Diajukan untuk memenuhi salah satu tugas mata kuliah
Aplikasi IT II

Nama : Panji Nur Hidayat


Nim : 10115226

Jurusan Teknik Informatika


Fakultas Teknik dan Ilmu Komputer
Universitas Komputer Indonesia
2015

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

Operasi Regular Expression..................................................................................4

A.

Karakter Awal.................................................................................................... 4

A.

Case Sensitive.................................................................................................... 4

B.

Karakter Akhir................................................................................................... 5

C.

Meta Character.................................................................................................. 6

D.

Kurung Siku...................................................................................................... 7

E.

Titik................................................................................................................. 8

F.

Bintang dan Tambah........................................................................................... 9

G.

Tanda Tanya.................................................................................................... 10

H.

Kurung Kurawal........................................................................................... 11

2.3 Urutan Karakter Khusus......................................................................................... 12


A.

Kurung Biasa.................................................................................................. 13

B.

Karakter Pipe.................................................................................................. 14

2.4 Modifier dan Assertions.......................................................................................... 15


2.5 Delimeter............................................................................................................ 16
2.6 Melihat Pola di Depan dan Belakang.........................................................................16
2.7 Fungsi Sejenis...................................................................................................... 18
A.

preg_replace()................................................................................................. 18

B.

preg_match_all().............................................................................................. 18

BAB III Penutup.......................................................................................................... 19


3.1 Kesimpulan.......................................................................................................... 19

BAB I Pendahuluan

1.1 Latar Belakang


PHP adalah sebuah bahasa pemrograman yang didesain agar dapat
disisipkan dengan mudah ke halaman HTML. PHP memberikan solusi
sangat murah (karena gratis digunakan) dan dapat berjalan di berbagai jenis
platform. Pada awalnya memang PHP berjalan di sistwm UNIX dan
variannya, namun kini dapat berjalan dengan lancar di lingkungan system
operasi windows. Suatu nilai tambah yang luar biasa karena proses
pengembangan program berbasis web dapat dilakukan lintas system operasi.
Dengan luasnya cakupan system operasi yang mampu menjalankan
PHP dan ditambah begitu lengkapnya function yang dimilikinya (tersedia
lebih dari 400 function di PHP yang sangat berguna) tidak heran jika PHP
semakin menjadi tren di kalangan programmer web.
Oleh karena itu agar lebih menguasai pemprograman menggunakan
PHP, kita dapat mempelejari syntak - sytak Regular Expression agar
program lebih efisien.

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

1.3 Rumusan Masalah


a) Bagaimana cara menggunakan perintah perintah Regular Expression pada
PHP ?
b) Bagaimana kita bisa memahami perintah perintah Regular Expression pada
PHP?

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.

2.2 Operasi Regular Expression


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

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.

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.

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,

melainkan hanya sebuah tanda operasi. Untuk memasukkannya

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.

Perhatikan bahwa sebelum tanda tambah disertakan pula tanda backslash.


Hal ini juga berlaku untuk semua karakter meta. Pengecualian untuk karakter
backslash sendiri karena escape karakter juga perlu di-escape juga, untuk
memasukkan pola backslash pada regex, maka harus diulang 4 kali menjadi
\\\\.

D. Kurung Siku

Karakter kurung siku [] merupakan regex untuk menyatakan kelas


karakter, yaitu kumpulan karakter yang diinginkan. Karakter tersebut dapat
dituliskan [abcdefg] atau dengan dash [a-g] khusus untuk karakter yang
berurutan. Untuk melihat apa saja karakter yang sesuai, Anda bisa
menggunakan fungsi preg_match_all() dan memasukkan parameter ketiga
berupa variable yang nantinya akan menyimpan sub-string apa saja yang sesuai
dengan pola yang ditentukan.

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.

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

Program tersebut akan menghasilkan output:

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

Anda juga bisa mengkombinasikannya dengan karakter meta yang lain.


Sebagai contoh untuk mendeteksi format nomor telepon rumah Kota Malang
yang terdiri atas kode area 0341 dan diikuti oleh 6 angka berikutnya, maka
regex-nya adalah sebagai berikut.

Untuk membuat aturan minimal sejumlah x perulangan, maka Anda bisa


menuliskannya dengan diikuti tanda koma setelah angka yang diharapkan.
Contohnya, bila ingin terdapat angka minimal 3 digit, maka dapat ditulis [0-9]
{3,}. Sedangkan bila menginginkan rentang jumlah perulangan yang diharapkan,
Anda dapat menyertakan tambahan angka lain setelah tanda koma, seperti {3,6}
yang berarti jumlah perulangan harus antara 3 sampai 6 kali.

2.3 Urutan Karakter Khusus


Alfabet dan angka merupakan karakter khusus yang berurutan. Cukup
merepotkan bukan bila harus menulis [abcd sampai xyz] ataupun [a-z]? Sama
12

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)

\d Untuk seluruh karakter berupa angka, sama seperti [0-9]


\D Untuk seluruh karakter yang bukan angka, sama seperti [^0-9]
\s Untuk karakter whitespace, sama seperti penulisan [\t\r\n\f\v]
\S Untuk karakter non whitespace, sama seperti penulisan [^\t\r\n\f\v]
\w Untuk semua karakter alpha-numeric, yaitu alfabet dan angka, sama

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.

2.4 Modifier dan Assertions


Pada contoh sebelumnya, Anda telah mempelajari modifier i untuk
menyatakan bahwa regex yang digunakan adalah case insensitive. Berikut ini
14

adalah beberapa modifier lain yang bisa Anda gunakan sesuai kasus yang Anda
butuhkan.
a)
b)
c)
d)
e)
f)
g)

i tidak menghiraukan huruf kapital atau case insensitive


U pencarian regex dengan metode ungreedy
s menyertakan new line dalam pola
m memperbolehkan pola dalam baris yang berbeda
x untuk regex dengan komentar dan whitespace
e evaluasi kode php (khusus fungsi preg_replace)
S analisis tambahan terhadap pola

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.

Assertion lainnya adalah :


1) \B bukan karakter word boundary
2) \A awal dari subject
3) \Z akhir dari subject, atau karakter new line
4) \z akhir dari subject
15

5) \G posisi yang sesuai di awal subject

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.

2.6 Melihat Pola di Depan dan Belakang


Regex memiliki kemampuan untuk mencari pola dengan melihat ke
belakang maupun ke depan dari pola yang dicari. Misalkan, ingin hanya mencari
kata nama yang didepannya diikuti oleh tanda titik dua. Atau ingin mencari kata
media yang diawali dengan kata pc. Semua bisa dilakukan dengan Regex.

16

Untuk melihat karakter atau kata di depan kata yang dicari, Anda bisa
menggunakan regex (?=). Perhatikan contoh berikut ini.

Program tersebut akan bernilai benar. karena karakter pc langsung


diikuti oleh media. Coba Anda ubah kata tersebut menjadi memiliki spasi,
maka akan bernilai salah.
Sedangkan untuk mencari pattern setelah kata yang dicari, namun
menghasilkan nilai negatif, menggunakan regex (?!). Maksudnya, yang
dicari adalah kata yang tidak diikuti oleh kata lain dalam regex tersebut.
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

2.7 Fungsi Sejenis


Selain preg_match(), ada beberapa fungsi regex yang bisa langsung Anda
gunakan untuk berbagai kasus. Diantaranya adalah sebagai berikut ini.

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

BAB III Penutup

3.1 Kesimpulan
Dalam menjalankan program menggunakan PHP, perintah
Regular Expression sangat membantu dalam beberapa
kasus,sehingga membuat program lebih efisien.

19

Anda mungkin juga menyukai