SlideShare a Scribd company logo
Bermain dengan Regex
(REGULAR EXPRESSION)
Studi Kasus
Mengambil artikel dari paper dan kemudian menampilkan
nya di halaman web, tetapi semua link image yang
ditemukan dalam paper ditampilkan gambarnya dan semua
link youtube di tampilkan videonya.
Tanpa Regex….??????????
Regular Expressions
Regular Expression atau yang lebih sering disebut regex
merupakan sebuah teknik yang digunakan untuk
mencocokan string teks, seperti karakter tertentu, kata-kata,
atau pola karakter. RegEx memiliki 2 fungsi utama yakni
mencari dan mengganti, mencari suatu pola tertentu dalam
text lalu menggantinya menjadi pola yang lain.
Wildcard
Anda yang pernah memakai DOS atau Linux tentunya
familiar dengan wildcard—atau globbing jika di Unix.
Wildcard adalah sebuah string pola yang dapat digunakan
untuk dicocokkan dengan sekumpulan nama file dan
direktori. Misalnya: *.exe akan cocok dengan semua file
berekstensi .exe. Karakter khusus wildcard ‘*’ di sini berarti
cocok dengan deretan satu atau lebih karakter apa saja.
Contoh lain, ???.txt akan cocok dengan tiap file .txt yang
namanya terdiri dari tiga huruf.
Pemilihan, Pengelompokan, Set, dan
Opsional (1)
Sama seperti wildcard, regex pun adalah sebuah string pola. Pola yang
akan dicocokkan oleh komputer dari kiri ke kanan. Pola regex “satu”
misalnya, cocok dengan string “satu” dan tidak dengan string “dua”. Tidak
ada bedanya dengan operasi pembandingan string biasa bukan?
Beberapa karakter dalam sebuah pola regex akan diartikan secara khusus.
Karakter-karakter ini disebut karakter meta (alias, bukan yang
sesungguhnya). Ini sama seperti karakter * dan ? di wildcard yang bukan
diartikan sebagai karakter literal bintang dan tanda tanya itu sendiri,
melainkan berarti khusus. Demikian juga karakter-karakter meta.
Pemilihan, Pengelompokan, Set, dan
Opsional (2)
Jika wildcard di DOS hanya mengenal dua karakter meta, ? dan *,
dan itu pun tidak fleksibel, maka dalam bahasa regex standar
umumnya dikenal beberapa jenis karakter meta lain. Berikut ini
beberapa karakter meta dasar.
◦ | (garis vertikal) untuk pemilihan;
◦ ( dan ) (kurung buka dan kurung tutup) untuk pengelompokan;
◦ [ dan ] (kurung siku buka dan tutup) untuk membuat set karakter;
◦ ? (tanda tanya) untuk mengartikan opsional.
Pemilihan
| disebut juga alternasi atau pemilihan. Dapat dibaca sebagai “atau”.
Gunanya untuk memilih satu dari dua atau lebih alternatif yang kita
sediakan. Beberapa contoh:
◦ aku|kamu, cocok dengan aku atau kamu, tapi tidak dengan dia;
◦ apel|anggur|pisang, cocok dengan salah satu dari apel, anggur, atau pisang,
tapi tidak dengan jambu karena itu tidak ada dalam daftar pilihan.
Pengelompokan
( dan ) berguna untuk mengelompokkan, persis seperti tanda kurung
dalam operasi matematika. Umumnya dipakai bersama karakter
meta lain.
Contoh:
satria (baja hitam|pembela kebenaran) akan cocok dengan “satria
baja hitam” atau “satria pembela kebenaran”. Regex ini berbunyi
sebagai berikut: “deretan huruf ‘satria’ diikuti spasi dan diikuti ‘baja
hitam’ atau ‘pembela kebenaran’.
Set karakter
[ dan ] mengapit sebuah set karakter. Pada dasarnya berguna untuk memberi
pilihan juga, sama seperti |, namun memiliki perbedaan pilihannya berupa huruf
dan memiliki sintaks rentang dan negasi. Sintaks rentang adalah [m-n] dan akan
cocok dengan karakter mulai dari m hingga n. Sintaks negasi adalah [^m] dan
akan cocok dengan semua karakter kecuali m.
◦ bat[aoiu]k, cocok dengan batak, batok, batik, atau batuk.
◦ bat(a|i|o|u)k, sama dengan sebelumnya, namun menggunakan |.
◦ [0-9], cocok dengan angka 0 hingga 9.
◦ [A-EG-Z], cocok dengan semua huruf besar kecuali F.
◦ [0-9][0-9], cocok dengan `00’ hingga ‘99’ (100 kombinasi).
Opsional
Arti ? di regex berbeda dengan di wildcard. Di regex, ? berarti huruf atau kelompok di kiri
bersifat opsional. Dapat juga dibaca sebagai “boleh ada atau boleh tidak.” Beberapa contoh:
◦ silah?kan, cocok dengan silakan atau silahkan.
◦ (silah)?kan, cocok dengan silahkan atau dengan kan saja.
◦ advi([sc]es?|sory), cocok dengan advice, advise, advices, advises, atau advisory. Regex ini
berbunyi “empat huruf advi diikuti dengan salah satu dari: a) huruf s atau c yang diikuti e dan
boleh diikuti s; atau b) deretan huruf sory.”
Titik, Nol-Atau-Lebih, Satu-Atau-Lebih,
Jangkar
Berikut ini empat lagi karakter meta dasar lain.
◦ . (titik) cocok dengan satu karakter apa pun;
◦ * (bintang) untuk mengartikan “nol atau lebih”;
◦ + (plus) untuk mengartikan “satu atau lebih”;
◦ ^ (tanda pangkat) dan $ (dolar) untuk penjangkaran.
Titik
Titik atau dot adalah lambang yang cocok dengan semua karakter tunggal.
Beberapa contoh:
◦ bat.k cocok dengan batak, batok, dan juga batbk, bat+k, bat8k, dsb. Namun
tidak cocok dengan batrak (karena tr adalah dua karakter) atau batk (nol
karakter).
◦ bat.?k sama seperti sebelumnya, namun cocok pula dengan batk (nol
karakter) karena titik diikuti oleh tanda opsional.
◦ b...k cocok dengan lebih banyak lagi string, mulai dari batak, buruk, bilik, dan
semua potongan string yang terdiri dari 5 karakter, diawali dengan b dan
diakhiri dengan k.
Nol-Atau-Lebih, Satu-Atau-Lebih
Kalau tanda optional ? bisa dibilang sebagai “nol-atau-satu”, maka *
melambangkan “nol-atau-lebih” dan + melambangkan “satu-atau-lebih” dari
karakter atau kelompok yang berada tepat di kiri tanda tersebut. Beberapa
contoh:
◦ [0-9]+, cocok dengan deretan angka.
◦ .+, cocok dengan satu atau lebih karakter apa pun, atau cocok dengan string yang “tidak
kosong”.
◦ .*, cocok dengan nol atau lebih karakter apa pun, atau cocok dengan string apa saja,
termasuk juga yang kosong.
◦ h?(ah|eh)+!*, berbunyi “boleh diawali huruf h, terdiri dari deretan ah atau eh, dan boleh
diakhiri dengan deretan tanda seru.” Cocok dengan string seperti eh, hahahah!, atau
ehehahehah!!!. Tidak cocok dengan string seperti haha, hhah!, maupun h!.
Jangkar
^ dan $ masing-masing dapat disebut sebagai “harus di awal” dan “harus di
akhir.” Mengapa disebut jangkar? Kedua karakter ini tidak melambangkan
karakter mereka sendiri, ingat, keduanya adalah karakter meta. Bahkan ^ dan $
di sini tidak melambangkan karakter apapun, melainkan mensyaratkan posisi
atau penambatan pola ke string yang ingin dicocokkan. Itulah sebabnya
pasangan karakter meta ini disebut anchor, atau jangkar. Beberapa contoh:
◦ 456 cocok dengan 456, 456789, maupun 123456 karena ketiganya
mengandung pola tersebut.
◦ ^456 cocok dengan 456, 456789, namun tidak cocok dengan 123456.
◦ ^456$ hanya cocok dengan 456, tidak dengan 456789 maupun 123456.
Quantifier
?, +, dan * sebetulnya adalah shortcut dari sebuah sintaks yang lebih umum,
yaitu quantifier. Quantifier menyatakan berapa rentang jumlah yang
diperbolehkan dari elemen yang di depannya. Format quantifier adalah salah
satu dari:
◦ X{m}, artinya elemen X harus terulang sebanyak persis m kali.
◦ X{m,}, artinya elemen X harus ada minimal sebanyak m kali.
◦ X{,n}, artinya elemen X boleh ada hingga terulang maksimal n buah.
◦ X{m,n}, artinya elemen X boleh ada dari m hingga n buah.
Escape
Karakter  (backslash, garis miring terbalik) boleh disebut karakter meta juga,
meski orang biasa menyebutnya karakter pengescape. Garis miring terbalik ini
perlu sekali untuk dua hal.
Fungsinya, untuk menjadikan karakter meta tepat di belakangnya menjadi literal.
Katakanlah Anda ingin mencocokkan x^2. Bagaimana caranya, sementara ^
adalah karakter meta? Jawabnya dengan escape: x^2.

More Related Content

PDF
TechTalk #69 : How to setup and run laravel apps inside vagrant
PDF
TechTalk #67 : Introduction to Ruby and Sinatra
PPT
4 Html
PPT
Xml theory 2005_[ngohaianh.info]_1_introduction-to-xml
PPT
Strings v.1.1
PDF
Home Safety Checklist
PPTX
Templates
PPTX
C# string concatenations in unity (Updated 2014/7/11)
TechTalk #69 : How to setup and run laravel apps inside vagrant
TechTalk #67 : Introduction to Ruby and Sinatra
4 Html
Xml theory 2005_[ngohaianh.info]_1_introduction-to-xml
Strings v.1.1
Home Safety Checklist
Templates
C# string concatenations in unity (Updated 2014/7/11)

Viewers also liked (19)

PPTX
PDF
Intro to Chef
PPTX
Introduction to XML
PPT
Strategy and Template Pattern
PDF
TechTalk #86 : ECMAScript 6 by Afief S
PPTX
Understanding Graph Structure in Knowledge Bases
PDF
XSLT 1 and XPath Quick Reference (from mulberrytech.com)
DOCX
C++ Template
PDF
Managing RDF data with graph databases
PDF
Xsl Tand X Path Quick Reference
PDF
DSA - Lecture 04
PPT
14. Linked List
PDF
Template at c++
PPTX
Templates presentation
PPT
Trees - Data structures in C/Java
PPT
Templates
PPTX
Tree in data structure
PDF
Binary tree
PPTX
Programming in C Basics
Intro to Chef
Introduction to XML
Strategy and Template Pattern
TechTalk #86 : ECMAScript 6 by Afief S
Understanding Graph Structure in Knowledge Bases
XSLT 1 and XPath Quick Reference (from mulberrytech.com)
C++ Template
Managing RDF data with graph databases
Xsl Tand X Path Quick Reference
DSA - Lecture 04
14. Linked List
Template at c++
Templates presentation
Trees - Data structures in C/Java
Templates
Tree in data structure
Binary tree
Programming in C Basics
Ad

Recently uploaded (20)

PPTX
4. PENERAPAN PENGELOLAAN SUMBER DAYA MANUSIA.pptx
PPT
electronic fuel injection for automotive sectors
PPTX
MAINTENACE KNOWLEDGE_SHARING_ALL NEW.pptx
PPTX
Materi_Konstruksi_Edukatif_Emosional_Damage.pptx
PDF
12. Mekanisme Pelaporan Kegiatan Sanimas_rev08082024.pptx.pdf
PPTX
PEMBUATAN PANEL TRAINER DAN PROTOTYPE UNTUK PENINGKATAN KOMPETENSI TENTANG S...
PPTX
2013materistudiumgeneralkabsndiunsri-130318044328-phpapp01.pptx
PDF
chapter 1 Smith and Van ness thermodynamics
PPT
PCM pekerjaan pembangunan Jembatan payahe
PPTX
Resistensi Perubahan Teknik Sipil Manajemen Konstruksi
PPTX
SISTEM_INFORMASI_GEOGRAFIS_unlocked.pptx
PPTX
585590334-INTAKE-AND-EXHAUST-SYSTEM-Ahmad-Aditya-S-W.pptx
PPTX
7-presentasi-pk-metrologi-141030010022-conversion-gate01.pptx
PDF
Jual Echosounder Hi-Target HD Lite Brochure EN.pdf
PPTX
4. Penyusunan Rancangan Kontrak _edit 2024-Parwanta1.pptx
PPTX
PPT - Materi Paparan Laporan Akhir RP3KP Paser.pptx
PPT
hand-tools-service-special-tools-alat-ukur.ppt
PPTX
Pengarusutamaan GESI Dalam Penataan Perumahan dan Permukiman.pptx
PPTX
TOPOLOGI JARINGAN STAR TEKNIK INFORMATIKA
PPTX
Pengenalan SPALDT_SPALDS_Karanganyar.pptx
4. PENERAPAN PENGELOLAAN SUMBER DAYA MANUSIA.pptx
electronic fuel injection for automotive sectors
MAINTENACE KNOWLEDGE_SHARING_ALL NEW.pptx
Materi_Konstruksi_Edukatif_Emosional_Damage.pptx
12. Mekanisme Pelaporan Kegiatan Sanimas_rev08082024.pptx.pdf
PEMBUATAN PANEL TRAINER DAN PROTOTYPE UNTUK PENINGKATAN KOMPETENSI TENTANG S...
2013materistudiumgeneralkabsndiunsri-130318044328-phpapp01.pptx
chapter 1 Smith and Van ness thermodynamics
PCM pekerjaan pembangunan Jembatan payahe
Resistensi Perubahan Teknik Sipil Manajemen Konstruksi
SISTEM_INFORMASI_GEOGRAFIS_unlocked.pptx
585590334-INTAKE-AND-EXHAUST-SYSTEM-Ahmad-Aditya-S-W.pptx
7-presentasi-pk-metrologi-141030010022-conversion-gate01.pptx
Jual Echosounder Hi-Target HD Lite Brochure EN.pdf
4. Penyusunan Rancangan Kontrak _edit 2024-Parwanta1.pptx
PPT - Materi Paparan Laporan Akhir RP3KP Paser.pptx
hand-tools-service-special-tools-alat-ukur.ppt
Pengarusutamaan GESI Dalam Penataan Perumahan dan Permukiman.pptx
TOPOLOGI JARINGAN STAR TEKNIK INFORMATIKA
Pengenalan SPALDT_SPALDS_Karanganyar.pptx
Ad

TechTalk #70 : REAL PROGRAMMER USE REGEX

  • 2. Studi Kasus Mengambil artikel dari paper dan kemudian menampilkan nya di halaman web, tetapi semua link image yang ditemukan dalam paper ditampilkan gambarnya dan semua link youtube di tampilkan videonya. Tanpa Regex….??????????
  • 3. Regular Expressions Regular Expression atau yang lebih sering disebut regex merupakan sebuah teknik yang digunakan untuk mencocokan string teks, seperti karakter tertentu, kata-kata, atau pola karakter. RegEx memiliki 2 fungsi utama yakni mencari dan mengganti, mencari suatu pola tertentu dalam text lalu menggantinya menjadi pola yang lain.
  • 4. Wildcard Anda yang pernah memakai DOS atau Linux tentunya familiar dengan wildcard—atau globbing jika di Unix. Wildcard adalah sebuah string pola yang dapat digunakan untuk dicocokkan dengan sekumpulan nama file dan direktori. Misalnya: *.exe akan cocok dengan semua file berekstensi .exe. Karakter khusus wildcard ‘*’ di sini berarti cocok dengan deretan satu atau lebih karakter apa saja. Contoh lain, ???.txt akan cocok dengan tiap file .txt yang namanya terdiri dari tiga huruf.
  • 5. Pemilihan, Pengelompokan, Set, dan Opsional (1) Sama seperti wildcard, regex pun adalah sebuah string pola. Pola yang akan dicocokkan oleh komputer dari kiri ke kanan. Pola regex “satu” misalnya, cocok dengan string “satu” dan tidak dengan string “dua”. Tidak ada bedanya dengan operasi pembandingan string biasa bukan? Beberapa karakter dalam sebuah pola regex akan diartikan secara khusus. Karakter-karakter ini disebut karakter meta (alias, bukan yang sesungguhnya). Ini sama seperti karakter * dan ? di wildcard yang bukan diartikan sebagai karakter literal bintang dan tanda tanya itu sendiri, melainkan berarti khusus. Demikian juga karakter-karakter meta.
  • 6. Pemilihan, Pengelompokan, Set, dan Opsional (2) Jika wildcard di DOS hanya mengenal dua karakter meta, ? dan *, dan itu pun tidak fleksibel, maka dalam bahasa regex standar umumnya dikenal beberapa jenis karakter meta lain. Berikut ini beberapa karakter meta dasar. ◦ | (garis vertikal) untuk pemilihan; ◦ ( dan ) (kurung buka dan kurung tutup) untuk pengelompokan; ◦ [ dan ] (kurung siku buka dan tutup) untuk membuat set karakter; ◦ ? (tanda tanya) untuk mengartikan opsional.
  • 7. Pemilihan | disebut juga alternasi atau pemilihan. Dapat dibaca sebagai “atau”. Gunanya untuk memilih satu dari dua atau lebih alternatif yang kita sediakan. Beberapa contoh: ◦ aku|kamu, cocok dengan aku atau kamu, tapi tidak dengan dia; ◦ apel|anggur|pisang, cocok dengan salah satu dari apel, anggur, atau pisang, tapi tidak dengan jambu karena itu tidak ada dalam daftar pilihan.
  • 8. Pengelompokan ( dan ) berguna untuk mengelompokkan, persis seperti tanda kurung dalam operasi matematika. Umumnya dipakai bersama karakter meta lain. Contoh: satria (baja hitam|pembela kebenaran) akan cocok dengan “satria baja hitam” atau “satria pembela kebenaran”. Regex ini berbunyi sebagai berikut: “deretan huruf ‘satria’ diikuti spasi dan diikuti ‘baja hitam’ atau ‘pembela kebenaran’.
  • 9. Set karakter [ dan ] mengapit sebuah set karakter. Pada dasarnya berguna untuk memberi pilihan juga, sama seperti |, namun memiliki perbedaan pilihannya berupa huruf dan memiliki sintaks rentang dan negasi. Sintaks rentang adalah [m-n] dan akan cocok dengan karakter mulai dari m hingga n. Sintaks negasi adalah [^m] dan akan cocok dengan semua karakter kecuali m. ◦ bat[aoiu]k, cocok dengan batak, batok, batik, atau batuk. ◦ bat(a|i|o|u)k, sama dengan sebelumnya, namun menggunakan |. ◦ [0-9], cocok dengan angka 0 hingga 9. ◦ [A-EG-Z], cocok dengan semua huruf besar kecuali F. ◦ [0-9][0-9], cocok dengan `00’ hingga ‘99’ (100 kombinasi).
  • 10. Opsional Arti ? di regex berbeda dengan di wildcard. Di regex, ? berarti huruf atau kelompok di kiri bersifat opsional. Dapat juga dibaca sebagai “boleh ada atau boleh tidak.” Beberapa contoh: ◦ silah?kan, cocok dengan silakan atau silahkan. ◦ (silah)?kan, cocok dengan silahkan atau dengan kan saja. ◦ advi([sc]es?|sory), cocok dengan advice, advise, advices, advises, atau advisory. Regex ini berbunyi “empat huruf advi diikuti dengan salah satu dari: a) huruf s atau c yang diikuti e dan boleh diikuti s; atau b) deretan huruf sory.”
  • 11. Titik, Nol-Atau-Lebih, Satu-Atau-Lebih, Jangkar Berikut ini empat lagi karakter meta dasar lain. ◦ . (titik) cocok dengan satu karakter apa pun; ◦ * (bintang) untuk mengartikan “nol atau lebih”; ◦ + (plus) untuk mengartikan “satu atau lebih”; ◦ ^ (tanda pangkat) dan $ (dolar) untuk penjangkaran.
  • 12. Titik Titik atau dot adalah lambang yang cocok dengan semua karakter tunggal. Beberapa contoh: ◦ bat.k cocok dengan batak, batok, dan juga batbk, bat+k, bat8k, dsb. Namun tidak cocok dengan batrak (karena tr adalah dua karakter) atau batk (nol karakter). ◦ bat.?k sama seperti sebelumnya, namun cocok pula dengan batk (nol karakter) karena titik diikuti oleh tanda opsional. ◦ b...k cocok dengan lebih banyak lagi string, mulai dari batak, buruk, bilik, dan semua potongan string yang terdiri dari 5 karakter, diawali dengan b dan diakhiri dengan k.
  • 13. Nol-Atau-Lebih, Satu-Atau-Lebih Kalau tanda optional ? bisa dibilang sebagai “nol-atau-satu”, maka * melambangkan “nol-atau-lebih” dan + melambangkan “satu-atau-lebih” dari karakter atau kelompok yang berada tepat di kiri tanda tersebut. Beberapa contoh: ◦ [0-9]+, cocok dengan deretan angka. ◦ .+, cocok dengan satu atau lebih karakter apa pun, atau cocok dengan string yang “tidak kosong”. ◦ .*, cocok dengan nol atau lebih karakter apa pun, atau cocok dengan string apa saja, termasuk juga yang kosong. ◦ h?(ah|eh)+!*, berbunyi “boleh diawali huruf h, terdiri dari deretan ah atau eh, dan boleh diakhiri dengan deretan tanda seru.” Cocok dengan string seperti eh, hahahah!, atau ehehahehah!!!. Tidak cocok dengan string seperti haha, hhah!, maupun h!.
  • 14. Jangkar ^ dan $ masing-masing dapat disebut sebagai “harus di awal” dan “harus di akhir.” Mengapa disebut jangkar? Kedua karakter ini tidak melambangkan karakter mereka sendiri, ingat, keduanya adalah karakter meta. Bahkan ^ dan $ di sini tidak melambangkan karakter apapun, melainkan mensyaratkan posisi atau penambatan pola ke string yang ingin dicocokkan. Itulah sebabnya pasangan karakter meta ini disebut anchor, atau jangkar. Beberapa contoh: ◦ 456 cocok dengan 456, 456789, maupun 123456 karena ketiganya mengandung pola tersebut. ◦ ^456 cocok dengan 456, 456789, namun tidak cocok dengan 123456. ◦ ^456$ hanya cocok dengan 456, tidak dengan 456789 maupun 123456.
  • 15. Quantifier ?, +, dan * sebetulnya adalah shortcut dari sebuah sintaks yang lebih umum, yaitu quantifier. Quantifier menyatakan berapa rentang jumlah yang diperbolehkan dari elemen yang di depannya. Format quantifier adalah salah satu dari: ◦ X{m}, artinya elemen X harus terulang sebanyak persis m kali. ◦ X{m,}, artinya elemen X harus ada minimal sebanyak m kali. ◦ X{,n}, artinya elemen X boleh ada hingga terulang maksimal n buah. ◦ X{m,n}, artinya elemen X boleh ada dari m hingga n buah.
  • 16. Escape Karakter (backslash, garis miring terbalik) boleh disebut karakter meta juga, meski orang biasa menyebutnya karakter pengescape. Garis miring terbalik ini perlu sekali untuk dua hal. Fungsinya, untuk menjadikan karakter meta tepat di belakangnya menjadi literal. Katakanlah Anda ingin mencocokkan x^2. Bagaimana caranya, sementara ^ adalah karakter meta? Jawabnya dengan escape: x^2.