Wednesday, October 20, 2010

Mengikuti Temu Alumni Studi Ekskursie angkatan 2007

Selasa 19 Oktober saya mengikuti acara temu alumni studi ekskursi angkatan 2007 di gedung Nyi Ageng Serang ruang Rapat BKW lantai 2, Jl. Rasuna Said Kuningan. Acaranya jam tujuh malam, saya rencana berangkat jam lima, tapi karena masih ada atasan saya dan juga kerjaan jadinya bisa keluar kantor jam setengah enam lebih, saya berangkat bawa motor karena trans bsd lewat depan kantor jam 5 lebih. Dari BSD saya lewat pamulang, ciputat, lebak bulus kemudian belok kiri ke ITC Fatmawati, blok M, dan nyebrang lewat jembatan layang karet kearah kuningan. Sudah beberapa kali saya lewat jalan serupa, tapi masih juga sempat kesasar sewaktu belok ke arah Fatmawati, ternyata dari lebak bulus tunggu belokan kedua, saya malah belok pertama ke arah pondok indah, dan sempat putar balik karena kalau lurus mengikuti jalan maka akan kembali lagi ke arah pondok pinang dan bintaro.

Dari blok M saya hafal jalan, saya lurus saja mengikuti jalan lewat ratu plaza, senayan, kolong semanggi sampai di halte busway karet setelah bendungan hilir saya belok kiri untuk menyabrang lewat jembatan layang karet lurus notok sampai ketemu kedutaan Malaysia belok kiri, saya ikuti jalan sebelah jalur cepat sampai ada rambu putar balik untuk sepeda motor, karena gedung acara ada di seberang jalan.

Gedung Nyi Ageng Serang ternyata merupakan gedung perpustakaan umum DKI, dan disewakan pula buat acara kawinan, didalamnya juga ada beberapa ruangan yang disewakan seperti yang digunakan untuk acara semalam, ruangannya berukuran sekitar enam kali lima belas meter, ada meja didepan dengan beberapa kursi untuk pembicara, dan kursi-kursi didepannya dibagi jadi dua kolom masing-masing lima kursi kanan dan kiri. Gedungnya ada di sebelah kiri gedung Gor Soemantri Brojonegoro, berderet setelah Taman Ismail Marzuki, dan Pasar Festival. Letaknya berdekatan dengan tempat tahun lalu yang ada di Wisma Kuningan Gor Soemantri Brojonegoro.

Setelah parkir motor di basement, saya memasuki halaman gedung, berpapasan dengan Daniel02 dan teman-temannya, saya masuk ruangan lobby, disana banyak angkatan 2007, saya telpon dan sms Wahib bilang sudah sampai di tempat, sempat kelihatan Ardhi03 yang buru-buru pergi ke basemen. Kemudian diantarkan angkatan 2007 ke lantai 2 lewat lift, dan sempat ditanyai angkatan berapa dan kerja dimana, saya bilang kalau angkatan 99 satu angkatan sama pak Arie MS dosen pendamping mereka dan sekarang kerja di Sigma tinggal di BSD. Keluar lift saya isi buku tamu dan memasuki ruangan, disana sudah ada Kamal sama Arie MS, beberapa waktu kemudian Wahib datang. Saya tanya kabar mereka, saya juga tanya ke Arie apa ga daftar S3 ke Taiwan yang ada di milis jurusan soalnya sudah S2 di Australia, dia bilang ga dulu, saya juga tanya emangnya pengen S3 dimana katanya ya terserah rejekinya dimana, saya juga bilang kalau pengen juga nerusin sekolah yang di Taiwan tapi harus ngurus transkrip dan ijazah dalam bahasa Inggris dan buat satu halaman proposal dalam bahasa Inggris yang bakalan susah bagi saya untuk membuatnya, saya juga bilang ga apa-apa kalau ga sekolah lagi sampai sarjana saja.

Awalnya kami duduk di baris belakang kemudian sama pembawa acaranya diminta duduk di baris depan, kami pun pindah duduk di baris kedua sebelah kiri ruangan sama anak angkatan 2002 dan 2005, kemudian ada Yogie01, Hadi01 sama teman-temannya datang dan duduk di baris depan kami, sedangkan di baris belakang kami ada angkatan 2006 sama 2004. Acara dibuka Arie MS sebagai dosen pendamping, kemudian kami semua para alumni diminta memperkenalkan diri, saya bilang bahwa nama saya Imam, angkatan 99, satu angkatan sama mas Kamal, pak Arie, sama mas Wahib, sekarang bekerja di Sigma, vendor lokal sebagai programmer Java. Acara dilanjutkan dengan makan malam dan hiburan nyanyi karena ada yang ikut Indonesian Idol, kemudian pertanyaan, ada lima pertanyaan, yang pertama ada yang bertanya tentang di kerjaan sekarang apakah sudah merasa puas atau belum dan apa cita-citanya di kerjaan, kemudian ada yang tanya kalau tidak bisa ngoding bagaimana, pilih mana idealis atau ambil kesempatan yang ada, bagaimana jadi spesialis di IT jika sekarang banyak pelatihan manajemen, dan bagaimana karir di IT buat cewek.

Acara selesai sekitar jam 10 malam lebih, kami pun pulang, saya pulang lewat jalan yang sama sampai rumah jam sebelas malam lebih.

Mengikuti Buka Bersama di Kediaman Pak Nuh

Saya berangkat dari kantor di BSD pukul 4.45 sore, sebetulnya sudah ijin ke atasan saya mau pulang jam setengah lima tapi karena ada kerjaan jadinya bisa berangkat agak sorean. Di jalanan juga macet, sampai di ratu plaza sudah Maghrib, padahal undangannya jam 5, tapi memang saya niatkan datang saja, meski disana cuma diam dan datang belakangan, saya juga tidak tahu lokasi acara tepatnya dan rutenya, yang saya tahu Jl. Widya Chandra itu di depan Planet Hollywood Gatot Sudirman. Saya kira daerah gatsu itu di terusan ratu plaza-senayan-karet-benhil-hotel indonesia, tetapi ternyata jl. Gatot Subroto itu melintang diatasnya, sewaktu melewati kolong di jembatan Semanggi saya beli bensin eceran dan tanya kepada penjualnya, syukurlah dikasih tahu soalnya saya punya pengalaman tanya jalan di Jakarta malah disasarkan. Dan untungnya pula saya beranikan bertanya soalnya kalo tidak saya bakal putar jauh soalnya sudah melewati jalan gatot soebroto.

Jadi ketika melewati kolong jalan berbentuk semanggi dari senayan ke arah karet jalannya satu arah yaitu belok ke kanan, tetapi dia sarankan lebih baik saya angkat motor saya dan naik di trotoar melawan arus kemudian putar balik melewati jalan layang yang tepat diatas kami sekarang. Sepanjang jalan Gatot Soebroto juga macet luar biasa, dan untuk sampai ke acara meski sudah sampai Planet Hollywood harus putar balik agak jauh, untungnya jalan yg arah sebaliknya sangat lengang.

Sampai di jl. Widya Chandra jam tujuh kurang, ternyata ada dua arumah yang rame didatangi orang-orang, ternyata setelah saya tanya ternyata ada acara buka bersama orang-orang ITB, tapi tidak tahu siapa nama menterinya. Disana orang informatikanya yang saya tahu ada saya, Wahib99, Ariq99, Ridha99, mas Nafiri Furqoni96, sama mbak Umi Azizah94. Nizar03 tidak jadi datang karena semalam sebelumnya bergadang, saya juga bertemu beberapa teman dari jurusan lain. Tanpa mengecilkan para alumni yang lain yang saya tahu, disana juga banyak tokoh-tokoh terkenal, selain pak Nuh, ada pak Widya Purnama mantan dirut Indosat dan Pertamina, pak Muhammad Nadjib anggota DPR, pak Agus Widjanarko Sekjen Departemen PU, pak Eko Djatmiko purek 4, dan pak Daniel M Rosyid sekarang jadi calon rektor, pak Dwi Sutjipto dirut semen gresik dan ketua PP IKA sekarang, pak Sutopo, pak Djawahir, pak Amir Hamzah, dan pak Helvy orang-orang IKA, ada juga mas Arif tekkim, mas Hambali, mas Djafar, Erik, mbak Fitri Latifah, dan Nelly teman-teman Prolead. Juga ada tamu orang non-ITS pak Dahlan Iskan dirut PLN.

Sesampai depan rumah pak Nuh, di depan pintu gerbangnya ada beberapa orang tukang foto dan peminta sumbangan, masuk ke halaman rumah pak nuh saya copot sepatu dan menaruhnya berjejer dan diberi nomer sepatu, di samping halaman itu ada mobil pelat merah pak Nuh. Kemudian saya isi daftar hadir yang sudah dipersiapkan oleh panitia. Karena sudah jam tujuh maka setelah saya bersalaman dengan teman-teman angkatan dan beberapa rekan kenalan, saya langsung ambil wudlu dan solat Maghrib dulu. Rumah pak Nuh luas sekali, mungkin semua rumah menteri didesain sama, ada ruang yang lapang sekali mungkin sepuluh kali sepuluh meter yang bisa menampung banyak orang didalamnya, dan memang sudah dirombak buat ngatasi acara seperti itu karena di samping rumahnya ada pipa yang di beri lima buah kran buat air wudlu, para tamu wanita bisa wudlu di kamar mandi yang ada disebelah ruangan yang lain, sedangkan untuk solat menggunakan ruangan besar di tengah rumah yang juga digunakan para tamu beramah tamah, sedangkan di pinggir-pinggir ruangan disediakan meja-meja berbagai hidangan untuk berbuka.

Setelah solat Maghrib saya sungkan untuk mengambil hidangan, apalagi kebanyakan para tamu sudah berbuka, banyak juga se yang baru datang tapi mungkin sudah buka sebelumny, ya sudah sampai saya pulang saya tidak mengicipi hidangan yang ada, tapi entah mengapa saya merasa senang aja sampai acara selesai sekitar pukul jam sembilan. Saya kemudian mengambil tempat duduk dengan teman-teman seangkatan saya, saya cerita ke mereka tentang perjalanan berangkat saya. Tidak lama kemudian ada orang yang adzan Isya', saya jadi ingat waktu jaman-jaman kuliah dulu, meski sudah berumur bapak-bapak, tetapi ketika sudah berkumpul seperti tadi malam rasanya seperti merasakan seperti pengkaderan. Ariq sama Wahib ambil air wudlu, saya ngga soalnya masih punya wudlu. Kami kemudian sholat Isya berjamaah, setelah itu Wahib, Ariq, sama Ridha pulang duluan, ketika berdoa selesai solat Ariq sudah ada di pintu nunggu Wahib, Wahib sama Ridha masih ngobrol di bagian tempat yang lain di tempat wudlu-wudlu, dari jauh saya bilang ke Ariq, "Nanti aja pulangnya, aku mau dengerin pidato-pidatonya dulu, mau ikut sampai selesai". Setelah itu Wahib sama Ariq kirim sms mau pulang duluan, saya balas hati-hati di jalan.

Setelah itu pak Djawahir sekjen PP IKA-ITS membuka pidato meminta pak Nuh memberi pidato dan sebelumnya berdoa kepada pak alm. Karomul Wahid wakil ketua PP yang sudah almarhum dan kepada pak Herman Widyananda wakil ketua BPK yang sedang berobat ke China. Pak Nuh kemudian berpidato dan memimpin doa, beliau cerita kalau pak Karomul Wahid itu dulu teman waktu kuliah, ternyata anak profesor di ITS yang mana pasti orang-orang ITS dulu pasti mengenal ayahnya, juga bercerita bahwa ketika kuliah dulu pak Karomul sering membonceng beliau pake motornya karena waktu itu perawakan pak Karomul besar sedangkan pak Nuh kecil sehingga kemana-mana sering bersama-sama boncengan, dan mereka berdua dulu bagian membantu menggelar tikar dan menarik pipa buat wudlu buat jumatan.

Pak Nuh berpidato hanya sebentar, beliau kemudian mempersilahkan pak Dahlan Iskan untuk berpidato. Pidato pak Dahlan sangat panjang dan terperinci, beliau bercerita dari China daratan sepuluh hari untuk check up kesehatan, karena sudah berteman baik dengan dokternya, beliau pesan untuk memprioritaskan pak Herman Widyananda yang juga jadi pasien dokter yang sama. Ketika di China daratan pula pak Dahlan melihat pembangunan tower tertinggi di dunia yang berukuran 300 meter. Kata pak Dahlan sebetulnya gampang bangunnya karena bangunannya sederhana, seluas lapangan bola dengan bahan besi yang bagus, beliau bilang akan bangun tower serupa setinggi 301 di Bali sebagai Pembangkit Listrik Jawa Bali. Pak Dahlan juga bilang akan bangun pembangkit listrik tenaga matahari di lima pulau di Indonesia Timur, karena tenaga surya yang bagus itu di Indonesia timur, jika memang proyeknya untuk lima pulau itu bagus maka akan diterapkan di tempat lain. Beliau juga bercerita tentang batu bara yang diambil dari Sumatera yang untuk transportasinya ketika dibawa ke Jawa butuh ongkos yang banyak dan perlu jalur transporasi tersendiri lewat bawah laut, tapi sebelum membangunnya terlebih dahulu pak Dahlan ingin bangun daerah Sumatera terlebih dulu tempat tambang batubara berada.

Pak Dahlan juga bercerita bahwa sebetulnya tidak mau ketika ditawari jadi dirut PLN karena bukan seorang insinyur, tetapi setelah bertemu pak SBY yang bilang bahwa yang lebih dibutuhkan adalah leadership dan manajemen dan berbagai pertimbangan akhirnya pak Dahlan mau dengan beberapa syarat seperti tidak ada wakil dan memilih sendiri para direktur operasionalnya.

Mengikuti Young Alumni ITS Leadership & management Program 2010

Sabtu Minggu Tanggal 24-25 Juli ini alhamdulillah saya diterima mengikuti acara Program Leadership Young Alumni 2010. Program ini yang pertama diadakan oleh PP IKA-ITS dan akan diadakan tahunan sebagai kaderisasi IKA yang kedepannya diharapka bisa menciptakan kekuatan bersama yang selama ini dirasakan para almuni berjalan sendiri-sendiri, untuk prolead yang pertama ini acara bersamaan dengan acara Fun Futsal IKA ITS Jakarta Raya di Citos. Prolead berlangsung di Hotel Park Cawang. Hotel Park sendiri ternyata milik pak Musyanif, Teknik Sipil 73, presdir PP (Pembangunan Perumahan), BUMN yang didirikan Pak Karno karena punya keinginan untuk membangun perumahan untuk rakyat Indonesia, tapi dalam perjalanan aktualnya, saat ini PP membangun Hotel Indonesia Kempinski, Sampoerna Strategic Square, dan Hotel Park. Selain bekerja di PP, pak Musyanif juga mempunyai banyak usaha termasuk membangun Hotel Park berikut Park Apartement yang terletak bersebelahan. Ketika pak Musyanif dihubungi panitia prolead (mas Arief Hermawan Tekkim 95) untuk menjadi salah satu nara sumber, pak Musyanif bertanya tempatnya dimana, ketika dijawab di hotel Park, pak Musyanif berkata: "Loh itu khan hotel saya, ya sudah saya beri discount 50% buat bayar tempatnya". Ketika manajemen hotel menghubungi panitia untuk pembayaran, panitia bilang bahwa gak bayar penuh karena diminta sendiri oleh pemilik hotel dan minta agar bayarnya sabtu sore saja menunggu pak Musyanif datang mengisi acara jam 1, daripada nanti manajemen malah dimarahi oleh pak Musyanif karena memang diberi discount 50%.

Sabtu jam setengah tujuh pagi saya berangkat dari rumah menuju kantor untuk menitipkan motor, kemudian jalan kaki sekitar seratus meter ke halte bus depan German Center menunggu bus Mayasari Bakti 117 warna hijau jurusan Poris - Pulo Gadung. Sekitar jam tujuh kurang sepuluh busnya datang, busnya buatan agak lama, berusia lebih dari sepuluh tahun, tapi cukup terawat meski sudah mulai berkarat dan berbunyi ketika berjalan. Saya turun di UKI Cawang bayar sembilan ribu, setelah itu naik ojek bayar lima ribu, ternyata gedungnya cukup dekat bahkan dilewati oleh bus tadi tetapi putar jalan dulu lewat bawah tol, tukang ojeknya bilang bahwa nanti juga busnya lewat depan gedung untuk pulang ke BSD. Saya sendiri tidak tahu kalo ternyata dekat UKI dan dilewati bus 117, informasi yang saya dapat dari wikimapia dekat UKI dan UKI sendiri merupakan pemberhentian bus 117, jadi memang sudah saya rencanakan kalau turun di UKI dan jalan kaki jika nama hotelnya kelihatan, dan naik ojek jika tidak kelihatan.

Ketika sampai di hotel, saya dikasih tahu pihak informasi bahwa acara ITS ada di lantai 1, ruang Cendana 1 sebelah kanan lift, hotelnya kecil, baru beroperasi juga, dibangun 2002, tapi cukup rame, saya satu lift dengan seorang asing bersama anak laki-lakinya berusia sepuluh tahunan. Disebelah lift yang ada dua itu ada tangga yang pendek sekali jika lewat ke lantai satu. Saya menunggu dua lift itu sampai ground floor lumayan lama karena memang liftnya meski baru tapi diset jalan pelan biar lebih nyaman, dan lebih cepat sampainya kalo naik tangga karena memang hotelnya kecil tapi bermodel modern bersih. Sampai di depan ruang Cendana 1 saya bertemu cak Arief, cak Hamdani, dan Allaq. Semua anak tekkim berbeda angkatan. Cak Hamdani tekkim angkatan 91 jadi moderator di hari pertama, sedangkan Allaq peserta, tekkim 2003.

Acara dimulai pukul 8.30, para peserta memasuki ruangan Cendana 1, meskipun ada beberapa yang datang terlambat, kemudian mas Arief berpidato pembukaan, dan mengatakan bahwa selamat datang
kemudian memberi waktu sepuluh menit dan meminta kepada para peserta menentukan nama-nama yang menjadi koordinator angkatan, pembawa acara, pembaca doa, dirijen lagu Indonesia Raya, dan pembaca kesimpulan masing-masing materi karena di prolead ini tiap akhir materi akan dibacakan kesimpulan selama lima menit oleh peserta bukan oleh moderator. Mas arief kemudian keluar ruangan selama sepuluh menit meninggalkan peserta. Kemudian Fibrina T. Industri 99 maju didepan membacakan sekilas kertas yang berisi table peran-peran yang perlu diisi nama para peserta. Untuk pembawa acara Allaq karena sudah berpengalaman, sedangkan moderator dari panitia, moderator hari pertama cak Hamdani, hari kedua cak Jafar, T. Fisika 96 dan Ning Umi, T. Informatika 94. Koordinator angkatan prolead Fibrina T. Industri 99, Nizar TC02 baca doa pembukaan, begitu pula ditentukan para pembaca resume tiap session, semua peserta diserahi tugas. Saya sendiri diminta sebagai dirijen mengiringi lagu Indonesia Raya, ketika ditanya siapa yang mau jadi dirijen, semua peserta ga ada yang mau, ada rekan yang bilang saya saja jadi dirijen, yasudah ga masalah saya jadi dirijen, tetapi sampai acara prolead selesai tidak jadi ada menyanyikan lagu Indonesia Raya.

Acara selesai pukul 17.30, saya pulang bareng mas Hanif, T. Sipil 96, dibayari naik taksi sampai BSD, rumahnya mas Hanif satu jurusan, ditengah perjalanan mas Hanif cerita ternyata temannya mas Torped T. Fisika 96 sama mas Jagir T. Mesin 96, sama mas Andri T. Informatika 97, SC Bakti Kampus saya dulu, mas Hanif dulu juga sama-sama jadi SC BK tapi di gugus yang berbeda.

Hari kedua, saya datang lebih siang karena sudah tahu tempatnya, naik bus 117 saya berhenti tepat di depan hotel Park bukan di perempatan UKI, sama dengan hari pertama saya aktif mengacungkan tangan untuk bertanya kepada para pembicara di setiap session tapi hanya beberapa kali diapprove oleh moderator karena teman-teman peserta yang lain juga melakukan hal yang serupa.

Tuesday, January 12, 2010

Regex

Regex kepanjangan dari Regular Expression, juga biasa disingkat RE, saya ingat mendapatkannya di Otomata atau Matematika Diskrit ketika kuliah. Pada dasarnya regex adalah suatu pola yang menggambarkan suatu text. Namanya muncul dari teori matematika. Kebanyakan dari post ini di copy dari http://www.regular-expressions.info, dan posting ini saya terjemahkan dari postingan saya sebelumnya Regex dalam Bahasa Inggris.

Regex adalah alat yang ampuh ketika kita sudah mempelajarinya, di project saya yg terdahulu menggunakan regex sebagai validator dari pojo-pojo saya dan sebagai validator dari nama file yg diapload ke aplikasi. Fyi, di aplikasi itu terdapat bagian upload file, dan file itu difilter terlebih dahulu oleh aplikasi, karena merupakan aplikasi report bank bulanan, jadi butuh mengetahui bahwa file yang diupload itu di bulan apa, maksud saya file itu harus diberi nama dengan pola tahun dan bulan di belakangnya.

11 Karakter Khusus (metacharacters)
- kurung kotak [
- backslash \
- the caret ^
- dollar $
- titik .
- the vertical bar or pipe symbol |
- tanda tanya ?
- tanda bintang *
- tambah +
- kurung buka (
- kurung tutup )
Jika ingin menggunakan metacharachter itu perlu didahului backslash, atau dua backslash kalo di program java.

Karakter yang tidak bisa dicetak
- \t untuk mencocoki karakter tab (ASCII 0x09)
- \r untuk enter (0x0D)
- \n untuk baris baru (0x0A)
- lebih jauh ada \a (bell, 0x07), \e (escape, 0x1B), \f (form feed, 0x0C) dan \v (vertical tab, 0x0B).
Dan sekali lagi kita butuh double backslash di java, satu backslash untuk regex biasa.

Mesin Regex
Merupakan software yang bisa memproses regex, mencoba untuk mencocokkan pola dari string yang diberikan.

Terdapat dua macam mesin regex: mesin text-directed dan mesin regex-directed. Jeffrey Friedl menyebutnya mesin DFA and NFA. http://www.regular-expressions.info berdasarkan mesin regex-directed, dan situs itu berdasarkan bahasa pearl. Pertama, saya mengira java juga regex-directed, tapi ternyata tidak, saya membuat program mini seperti yang ditulis di situs untuk mengetahui apakah java itu text-directed atau regex-directed, dan ternyata text-directed. Regexnya berupa regex|regex not dan stringnya berupa regex not, jika hasil pencocokannya regex maka mesin regex-directed. Jika hasilnya berupa regex not maka tex-directed. Dibawah ini code program saya dan outputnya berupa "Found 'regex not' at position 0":


public static void main(String[] args) {
Pattern p = Pattern.compile ( "regex|regex not", Pattern.CASE_INSENSITIVE ) ;
String text = "regex not";
Matcher m = p.matcher ( text ) ;
if ( m.matches() ) {
System.out.println ( "Found '" + m.group ( 0 ) + "' at position " + m.start ( 0 ) ) ;
}
else {
System.err.println("No found match");
}
}

Regex-directed selalu mengembalikan leftmost match, jika kita menerapkan regex cat ke string He captured a catfish for his cat, mesin akan mencoba mencocokkan token yang pertama di regex c ke karakter pertama di match H. Dan gagal. Tidak ada kemungkinan permutasi lain di regex ini, karena terdiri atas urutan karakter huruf. Sehingga mesin regex mencoba untuk mencocokkan c dengan e. Gagal juga, sampai mencocokkan dengan spasi. Sampai karakter keempat pencocokkan, c mencocoki c. Mesin akan mencoba mencocokkan token kedua a kekarakter kelima, a. Sukses juga. Namun kemudian t gagal mencocoki p. Di titik itu mesin mengetahui bahwa regex tidak bisa match dimulai dari karakter keempat. Maka berlanjut ke karakter kelima: a. Lagi c gagal cocok dan mesin berlanjut. Di posisi karakter ke15 dalam pencocokan, c bertemu c dan match. Mesin kemudian mencoba untuk match regex pada karakter 15 dan menemukan bahwa a match dengan a dan t match dengan t.

Regex tadi bisa match diposisi karakter 15. Mesin melaporkan match. Kemudian akan melaporkan tiga karakter dari catfish sebagai match yang valid. Dari titik ini mesin tidak pernah lagi memproses untuk melihat apakah ada match yang lebih baik.

Tapi di java yang termasuk text-directed, dia melaporkan tidak ada yg match, karena dia string yang dicocokkan ke regex, saya sudah mencoba regex cat dengan He captured a catfish for his cat, dan dia melaporkan bahwa tidak ada match, dia hanya menerima string cat.

Himpunan Karakter atau Kelas Karakter "[ ]"
Dengan himpunan karakter kita bisa memberi tahu mesin regex untuk match hanya satu dari beberapa karakter. Hanya dengan cara menempatkan karakter yang ingin dicocokkan diantara kurung kotak. Kita bisa menggunakan tanda hubung didalam kelas karakter untuk menentukan range karakter. [0-9] mencocokkan satu digit antara 0 sampai 9.

- \d untuk [0-9]
- \w singkatan untuk "word character", biasanya [A-Za-z0-9_]. Termasuk didalamnya garis bawah dan angka.
- \s untuk spasi
- Negasi, \D sama dengan [^\d], \W is untuk [^\w] and \S untuk [^\s]

Hati-hati ketika menggunakan negasi didalam kurung kotak. [\D\S] tidak sama dengan [^\d\s]. Yang terakhir akan match semua karakter yang bukan angka atau spasi. Sehingga akan match x, tapi tidak 8. Yang sebelumnya akan match semua karakter yang bukan angka, atau bukan spasi. Karena angka bukan spasi dan spasi bukan angka, [\D\S] akan match dengan semua karakter, angka, spasi atau lainnya.

Jika kita mengulangi satu kelas karakter dengan menggunakan operator ?, * atau +, kita akan mengulangi seluruh kelas karakter, dan bukan hanya karakter yang match. Regex [0-9]+ bisa match 837 juga 222. Tapi jika kita ingin mengulangi karakter, bukannya class, maka dibutuhkan backreference. ([0-9])\1+ akan match 222 dan bukan 837.

Negasi Kelas Karakter
Menulis ^ setelah kurung kotak akan menegasi kelas karakter. Hasilnya kelas karakter akan match dengan karakter apapun yang tidak ada di kelas karakter. Penting untuk diingat bahwa negasi kelas karakter masih harus matsh satu karakter. q[^u] tidak berarti: "sebuah q tidak diikuti sebuah u". Tapi artinya "Sebuah q diikuti oleh satu karakter yang bukan u". Ini akan tidak match q di Iraq. Akan match dengan q dan sapsi setelah q di Iraq is a country. Begitu pula spasi akan menjadi bagian dari match keseluruhan, karena merupakan "karakter yang bukan u" yang match dengan negasi kelas karakter regex diatas.

Metakarakter didalam Kelas Karakter
Bahwa karakter khusus atau metakarakter didalam kelas karakter adalah tutup kurung kotak (]), backslash (\), karet (^), dan tanda hubung (-). Metakarakter reguler adalah karakter normal didalam kelas karakter, dan tidak butuh didahului dengan backslash. Untuk mencari bintang atau plus, gunakan [+*]. Regex kamu akan berfungsi baik jika diberi backslash metakarakter didalam kelas karakter, tapi melakukannya akan membuat susah untuk dibaca.

Untuk memasukkan backslash sebagai karakter tanpa maksud khusus didalam kelas karakter, perlu diberi backslash lagi. [\\X] match sebuah backslash atau sebuah x. Tutup kurung kotak (]), karet (^) dan tanda hubung (-) bisa dimasukkan dengan ditambah backslash, atau dengan menempatkannya dalam posisi dimana mereka tidak butuh arti khusus. Direkomendasikan metode terakhir karena lebih mudah untuk membacanya. Untuk memasukkan karet, tempatkan dimanapun selain setelah kurung buka. [x^] match x atau karet. Kamu bisa meletakkan kurung tutup setelah kurung buka atau karet negasi. []x][^]x] match semua karakter yang bukan kurung tutup atau x.Tanda hubung bisa diletakkan setelah kurung buka, sebelum kurung tutup, atau setelah karet negasi. Dua duanya [-x] dan [x-] match x atau tanda hubung.

Dot Match (Hampir) Semua Karakter
Dot match satu karakter, tanpa memperhatikan karakter apa itu. Hanya ada satu pengecualian yaitu karakter baris baru. Sehingga dot kependekan dari [^\n].

Anchor

Anchor tidak match karakter apapun, dia match satu posisi sebelum, setelah, atau diantara karakter. Dan mereka match yang Zero-Length.
• karet match posisi sebelum karakter pertama dari string
• $ match setelah karakter terakhir dari string
• \b match di posisi yang disebut "word boundary"

Menerapkan ^a dengan abc match a. ^b tidak match dengan abc karena b tidak bisa dimatch setelah awal dari string, yang dimatch oleh ^. Sedangkan c$ match c di abc, sedangkan a$ tidak match.

Ada empat posisi berbeda yang memenuhi kualifikasi sebagai word boundary:
• sebelum karakter pertama dari string, jika karakter pertama adalah \w
• setelah karakter terakhir dari string, jika karakter terakhir adalah \w
• Diantara sebuah \w dan sebuah karakter non-word mengikuti setelah \w
• Diantara sebuah \W dan sebuah \w mengikuti setelah \W

Di mesin regex, \bis\b akan match This island is beautiful. Spasi adalah karakter non-word, dan yang lainnya karakter word. Mesin dengan sukses match kata is dalam string. Jika ktia menggunakan regex is, ini akan match dengan is di This.

Alternatif "|"
operator alternatif memiliki presedence terbawah dari semua operator regex. Yang mana memberi tahu regex mesin untuk match apakah semua di sebelah kiri vertical bar, atau semua sebelah kanan vertical bar. Jika kita ingin membatasi jangkauan alternasi, maka butuh kurung untuk grouping.

Opsional "?"
Bersifat greedy. Tanda tanya memberi mesin regex dua pilihan: coba match bagian dari tanda tanya, atau tidak mencoba match. Mesin akan selalu mencoba match bagian itu. Hanya jika hal ini menyebabkan keseluruhan regex untuk gagal, maka akan terus mengabaikan bagian dari tanda tanya itu.

Akibatnya adalah jika menerapkan regex Feb 23(rd)? ke string Feb 23rd, match akan selalu Feb 23rd dan bukan Feb 23. Kamu bisa membuat tanda tanya lazy (mematikan greediness) dengan meletakkan tanda tanya kedua setelah yang pertama.

"?,*, +,{}"
- ? opsional, 1 or 0
- * 0 atau lebih repetisi
- + 1 atau lebih repetisi
- {} membatasi repetisi, sintaksnya {min,max}, jika kita ingin membatasi n repetisi maka sintaksnya adalah {n}

Mereka greedy, misalnya kita inginmenerima tag html dengan regex: <.+>. Ketika kita coba test dengan satu string seperti This is a first test. Kita mungkin mengharapkan regex untuk match dan ketika melanjutkan setelah match itu. Namun tidak. Regex akan match dulu. Yang jelas bukan yang kita inginkan. Alasannya adalah bahwa plus bersifat greedy. Yang mana plus menyebabkan mesin regex untuk mengulang token sebelumnya sesering mungkin. Kecuali jika regex gagal, maka mesin regex akan backtrack. Yang mana, hal ini kembali ke plus, membuatnya memberi iterasi yang terakhir, dan memprosesnya dengan sisa regex.

Untuk memperbaikinya:
• laziness, dengan menambahkan "?", maka regex akan menjadi <.+?>
• solusi yang lebih baik tanpa backtracking: Menggunakan greedy plus dan negasi kelas karakter <[^>]+>

Grouping dan Backreference "()"
Selain mengelompokkan regex, tanda kurung juga membuat backreference. Backreference menyimpan bagian dari string yang match dengan bagian dari regex didalam tanda kurung.

([a-c])x\1x\1 match axaxa, bxbxb and cxcxc. \1 disebut backreference ([a-c]). dan di java butuh dua backslash. Contoh yang lainnya adalah <([A-Z][A-Z0-9]*)\b[^>]*>.*? yang match sepasang buka dan tutup tag HTML, dan text diantaranya, seperti text bold atau italic.

Java juga mendukung forward reference, yaitu: Kita bisa menggunakan backreference untuk satu grup yang muncul setelah regex. Biasanya hanya berguna jika mereka didalam group yang berulang. Misalnya (\2two|(one))+ akan match oneonetwo.