pertamanya.. ane memandang regex ini gak bakalan nyampe di otak ane.. tapi sedikit sedikit "terpancing" karena seringnya berhadapan konfigurasi squid dan.. L7 (yang kayaknya berubah2 implementasinya disetiap versi ROS)

apa itu regex?? regular expression.. sebuah pengolahan text yang sering dipakai pada beberapa bahasa pemrograman. tanpa menggunakan regex ini, refresh pattern di squid jadi panjang banget.. pokoknya regex mengenali pola-pola data dengan proses matching.. dalam sebuah url yang panjang dan bertele-tele ternyata ada kunci untuk menyimpulkan data apa yang sedang direquest.. atau sedang di download, kunci inilah yang dirumuskan dalam regex, seperti seorang kriptografer.. :P

ente yang pake windows atau linux base pasti tau apa itu wildcard atau globbing jika di Unix. Wildcard adalah sebuah string pola yang dapat digunakan untuk dicocokkan dengan sekumpulan nama file dan direktori. Mis: *.exe cocok dengan semua file berekstensi .exe. ???.3gp cocok dengan file .3gp. wildcard ini ternyata tidak sama polanya di windows, unix, dan linux.. nah.. regex mengambil jalan tengah..
seperti wildcard, Regex mengenali berdasarkan pola, yang dicocokan terhadap string dari kiri ke kanan,

tanda * dan ? disebuat karakter meta yang berarti alias.. (bukan sebenarnya red.)

String Meta
string meta itu terdiri dari | ( ) [ ] ? dimana
  • | adalah pemilihan (or)
    ( dan ) adalah pengelompokan
    [ dan ] untuk character set
    ? yang berarti opsional


contoh:

elo|gue|end match dengan elo atau gue atau end selain itu nggak
(kakiku|tanganku)sakit match dengan kakiku sakit atau tanganku sakit
mikr[oi]ti(k|ng) match dengan mikrotik, mikritik, mikroting, mikriting
[A-Za-z] match dengan alphabet huruf kapital, dan huruf kecil, tapi tidak match dengan 1,2,3,4,5....!@##
[0-9] match dengan 1,2,3,4........0
0[0-9][1-9] match dengan 001 - 099, tidak match dengan 0, 00, 10-99, 000, 100, 101, dst

String opsional dan string meta lainnya
? artinya boleh ada, boleh tidak
. artinya match dengan 1 karakter, apapun itu
* artinya tidak ada sama sekali (nol) atau lebih karakter
+ artinya satu atau lebih karakter
^ batas depan, berarti didepannya gak boleh adalagi karakter dan tutupnya adalah $ yang berarti dibelakannya udah ga ada lagi karakter, biasa disebut jangkar
tetapi didalam [ ], $ bukan string meta..

contoh

(kom)?puter match dengan komputer atau puter
kontr?ol match dengan kontrol atau .... heheheheh
t.ket match dengan tiket, tzket, twket, t1ket, t*ket dan seterusnya
b.?la match dengan bola, bela, bila, atau bla
678 match dengan 12345678, 456789, pokoknya yang mengandung 678
^678 hanya match dengan 678, 6789, deretan 345678 tidak cocok
34$ match dengan 1234, 234, 34 345678 tidak cocok

string meta yang haus resource jika salah penggunaan
.+ match dengan apapun itu.. yang penting string
.* lebih parah lagi.. biarpun bukan string (ga ada karakter) diembat juga