FAQ |
Calendar |
![]() |
|
Programming Share, tanya jawab, saling bantu antar programmer dengan berbagai macam bahasa pemrograman. |
![]() |
|
Thread Tools |
#1
|
|||
|
|||
![]() ![]() ![]() Sebelumnya, newbie minta sori jika thread serupa sudah pernah ada... emang sih sudah pernah ada, http://www.kaskus.us/search_result.php?q=regex namun alangkah baiknya jika dibuat thread resmi aja.. ![]() supaya segala permasalahan tentang regex bisa dibahas di sini dan supaya mudah mencari nya.... Intro dari Saya: ReGex (atau dikenal dengan regexp), kependekan dari Regular Expression adalah sekumpulan teks yang disusun sedemikian rupa berbentuk suatu pola, yang berguna untuk melakukan pencarian terhadap suatu string yang cocok dengan pola tersebut... Regex sangat lumrah digunakan dalam berbagai bahasa pemrograman untuk memproses atau mencari teks/string dalam jumlah banyak dan atau dengan format tertentu tanpa harus mencari string satu per satu... Misalnya untuk mencari format email, alamat URL, nomor telepon, dll lebih banyak lagi. Adalah banyak sekali tutorial Regex di belantara Internet ini, namun masih saja kita kadang bingung dibuatnya. Kenapa? karena memang regex ini tidaklah mudah untuk dimengerti (paling tidak menurut saya)... Oleh karena itu saya buat thread ini supaya para master2 programmer yang pada turun gunung sudi kira nya berbagi ilmu kanuragannya disini... ![]() Regex digunakan oleh banyak sekali bahasa pemrograman, diantaranya Delphi GNU (Linux) Groovy Java JavaScript .NET PCRE (C/C++) Perl PHP POSIX PowerShell Python R REALbasic Ruby Tcl VBScript Visual Basic 6 wxWidgets XML Schema XQuery & XPath Sedikit Tutorial Tentang Regex Tutorial berikut saya copas dari www.master.web.id karangan mas Steven Haryanto ,saya pecah jadi 2 bagian karena tidak muat ![]() Spoiler for from master web id: Kuasai Regex Hari Ini jg! Steven Haryanto Bagian: 1�Pengenalan dan Karakter Meta Sederhana Tingkat: Dasar Tujuan: Setelah membaca bagian pertama ini, pembaca diharapkan memahami beberapa metakarakter regex sederhana: dot, set karakter, lternasi, jangkar, shortcut quantifier +, *, ?, serta pengelompokan. Abstrak: Apa itu regular expression (regex), mengapa regex perlu, beberapa contoh awal. Prasyarat: Kenal dgn salah satu bahasa pemrograman Perl, PHP, atau Python. Ini tdk wajib, tapi akan membantu dlm memahami contoh-contoh. Kuis berhadiah BMW portal Astaganaga.com hari ini ditutup dan akan diundi dua minggu lagi. Ternyata jumlah formulir yg disubmit mencapai lebih dari 40 ribu! Sukses besar. Kebetulan, karena Anda seorang programer PHP yg telah mengerti tentang SQL dan RDBMS (meskipun hanya MySQL), data tiap formulir online sudah masuk semua dgn rapi ke database. dgn bangga Anda membuka browser dan mengakses URL phpMyAdmin dan bermaksud melihat-lihat data yg telah terkumpul. Nama propinsi kebetulan seragam semua, karena Anda telah membuat field isian berupa kotak select, sehingga pengisi formulir tinggal memilih dari daftar propinsi yg disediakan. Tapi, wah, ternyata nama kota cukup bervariasi karena di formulir berupa kotak isian. Banyak sekali terjadi salah ketik: �Jakrta�, �Seamrng.� Ada yg menulis dgn singkatan �DKI� atau �Bdg.� Ada pula yg berbaik hati menuliskan lengkapnya, �Jakarta Barat� atau malah �Kotamadya Bogor.� Dan ternyata Anda lupa melakukan pengecekan kode pos, sehingga ada sebagian yg salah, atau mungkin iseng, mengisi dgn huruf �tidak ada� atau �-� atau deretan huruf tertentu. Belum lagi alamat jalan, bervariasi sekali. Repotnya, sang bos ternyata meminta data ini dirapikan sebaik-baiknya, karena akan disusun menjadi database alamat yg mungkin bisa berguna di kemudian hari. Untuk mengirim penawaran via pos�alias junk mail�misalnya, atau malah daftar ini untuk dijual ke perusahaan lain. Dan karena Anda yg menyusun databasenya, Anda pulalah yg ketiban tugas merapikannya. Bos jg minta penulisan alamat sestandar mungkin. Semua dijadikan huruf besar. prefiks �Jalan� harus disingkat menjadi �Jl.� Gang menjadi Gg. Dan sudah pasti nama-nama kota harus dibetulkan. Salah Anda sendiri sebetulnya, kenapa tdk menyediakan daftar kota dari database. Tapi kesalahan selalu bisa terjadi toh. Solusi Non-Regex Oke, tugas pertama mengkonversi ke huruf kapital cukup mudah. Anda programer PHP, jadi Anda tinggal menggunakan fungsi builtin strupper(). PHP Code: # Langkah 1 $alamat=strupper($alamat); Sampai di sini alamat telah berubah menjadi string berhuruf besar semua. Hei, sebentar dulu. Ternyata ada alamat yg diawali spasi. Berarti, Anda perlu menghilangkan dulu semua spasi di awal. Untungnya di PHP tersedia fungsi ltrim(). PHP Code: # Langkah 0 $alamat=ltrim($alamat); Wah, ternyata Anda menyadari banyak jg yg mengetik spasi ganda bahkan tiga empat kali. Kok bisa ya? Bagaimana cara membetulkannya? PHP Code: # Langkah 0.2 while (1) { $alamat2=str_replace(" ", " ", $alamat); if ($alamat2 == $alamat) break; else $alamat=$alamat2; } Kode di atas mengubah string ganda (dua buah spasi) menjadi satu spasi terus-menerus hingga sudah tdk ada lagi string ganda. Tugas berikutnya menyingkat Jalan dan Gang. Sekali lagi, karena Anda programer PHP, Anda tinggal menggunakan fungsi string yg telah disediakan, str_replace(). PHP Code: # Langkah 2.1 $alamat=str_replace("JALAN", "JL.", $alamat); Mudah ya? Satu lagi: PHP Code: # Langkah 2.2 $alamat=str_replace("GANG", "GG.", $alamat); Hm, tapi ternyata ada jalan di Jakarta bernama Ganggeng. Seorang Ibu Anwar misalnya, tinggal di �Jalan Ganggeng 15.� Tentu saja tdk boleh diubah menjadi Gg.geng bukan? Bagaimana solusinya? Kita hanya boleh mengubah �Gang� yg berada di awal string. Untuk mengetahui posisi string dlm string lain, gunakan fungsi strpos(). Jika fungsi ini mengembalikan nilai 0, maka string yg dicari ada di awal. PHP Code: # Langkah 2.2b if (strpos($alamat, "GANG") === 0) { $alamat=GG." . substr($alamat, 4); } Ternyata belum benar. Ada seorang Bapak yg beralamat di �Jalan Kehakiman, Gang Haji Umar no. 14.� Uji yg tepat sebetulnya adalah mencari kata �Gang� yg berdiri sendiri, bukan bagian dari sebuah kata. Bagaimana caranya? PHP Code: # Langkah 2.2c $ALFABET="ABCDEFGHIJKLMNOPQRSTUVWXYZ"; $ganti=false; if (($pos=strpos($alamat, "GANG")) !== false) { # kata "GANG" berdiri sendiri jika terdapat di awal atau di akhir # string, atau dicabeinsi spasi atau tanda baca. if ((($pos == 0) or (strpos($ALFABET, substr($alamat, $pos-1, 1)) === false)) and (($pos + 4 == strlen($alamat)) or (strpos($ALFABET, substr($alamat, $pos+4, 1)) === false)) ) $ganti=true; } if ($ganti) $alamat=substr($alamat, 0, $pos) . "GG." . substr($alamat, $pos+4); Kode di atas pertama-tama mencari potongan �GANG�. Jika ditemukan, maka dilakukan pengujian sekali lagi apakah satu karakter di kiri dan di kanan �GANG� bukan sebuah huruf. Jika benar, maka barulah dilakukan penggantian. Ternyata derita Anda belum berakhir sampai di sini. Entah mengapa, banyak sekali yg mengeja �Gang� dgn �Gank� dan �Geng�. Terpaksa menambahkan potongan-potongan kode lagi ke kondisi pengujian sebelumnya. Belum lagi Anda masih harus membetulkan nama kota dan kode pos. Semakin banyak saja Anda harus memotong-motong dan menggabungkan string, mencari string di string lain, melakukan loop, pengujian, dsb. Duh, merepotkan! Lama-lama Anda jadi mempertimbangkan untuk mengedit langsung saja semua data tersebut secara manual. Contoh kasus di atas hanyalah secuil dari tugas mengolah teks. Tugas lainnya kadang jauh lebih kompleks. Mengerikan. Apakah mengolah teks harus bertele-tele dan merepotkan seperti contoh di atas? Kenalkan, Regex Jawabnya, untung saja, tdk. Ada sebuah bahasa mini yg disebut regular expression (regex) yg akan Anda pelajari sesaat lagi. Regex adalah sebuah fasilitas yg ampuh, yg memungkinkan Anda mengolah teks secara jauh lebih ringkas, tdk bertele-tele. Tanpa regex, rasanya pengolahan teks tingkat lanjut itu tdk terbayangkan repotnya. Bahkan, jika Anda buta regex, maka kemampuan mengolah teks Anda akan terus berada di tingkat taman kanak-kanak. dgn menguasai regex, Anda akan memandang teks dlm kacamata yg baru. Anda akan lebih lihai dan lancar dlm memainkan huruf dan angka, potongan dan kata, baris dan paragraf teks. Anda tdk akan takut lagi menghadapi data yg menyimpang atau aneh-aneh. Anda akan terlatih menemukan pola dari ketidakteraturan. Pendek kata, sekali mengenal regex�bolehlah penulis sedikit berlebihan di sini�hidup Anda tdk akan sama lagi! Pengetahuan regex jg amat berguna, karena dipakai di mana-mana. Bukan hanya di Perl, yg amat intensif menggunakan regex, tapi jg di bahasa pemrograman lain mulai dari Python hingga Java, dari Javascript hingga VB. Bukan hanya di Unix dgn utilitas-utilitas grep dan awk-nya, tapi jg di Windows dan OS lain dlm berbagai program. Misalnya akan Anda jumpai di editor teks (seperti vi dan joe), di file konfigurasi berbagai daemon dan utilitas (seperti procmail, exim, dan Apache), bahkan di aplikasi seperti Microsoft Word dan Borland Delphi regex pun tak luput dikenali. Intinya, pengetahuan regex Anda akan sangat portabel dan terpakai. Tertarik? Tentu. Jadi mari kita lanjutkan. Referensi: http://en.wikipedia.org/wiki/Regular_expression http://www.regular-expressions.info/ http://chimpy.wordpress.com/2009/06/...ex-cheatsheet/ http://www.webcheatsheet.com/php/reg...xpressions.php http://articles.sitepoint.com/articl...pressions-php# Terkait:
|
![]() |
|
|