1 / 31

Regular Expression

Regular Expression. Mia Kamayani ST, MT Prodi Teknik Informatika Fakultas Teknik UHAMKA. REGULAR EXPRESSION. RE adalah bahasa untuk mendeskripsikan dan memarsing string atau teks RE merupakan notasi (pattern notation) yang dapat digunakan untuk mengolah teks

gil
Download Presentation

Regular Expression

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Regular Expression Mia Kamayani ST, MT ProdiTeknikInformatika FakultasTeknik UHAMKA

  2. REGULAR EXPRESSION • RE adalahbahasauntukmendeskripsikandanmemarsing string atauteks • RE merupakannotasi (pattern notation) yang dapatdigunakanuntukmengolahteks • RE seringdigunakanuntuk “search and replace”

  3. Regular Expression • Regular Expression seringdisebutRegexatau RE • RE akanbersifat “match in”, misal RE “a” akan match in “cat” • RE ditemukanpadatahun 1940 an awaloleh 2 neuro physiologist, Warren McCulloch dan Walter Pitts padasaatmembuat model neuron (syaraf) • Kemudian model tersebutdibuataljabarnyaolehseorangmatematikawan Stephen Kleenedandiberinama “regular expression” • Tahun 1968 munculbuku “Regular Expression Search Algorithm” dari IBM

  4. Tool RE • Adadigrep, QED, AWK, Emacs, Vi • Salahsatu tool yang dapatdigunakanuntukbelajar RE adalahhttp://weitz.de/files/regex-coach.exe (Regex Coach) yang dibuatoleh Dr. Edmund Weitzuntuk Windows atauhttp://weitz.de/files/regex-coach.tgzuntuk Linux. • Notepad++, OpenOffice, RegexBuddy, PowerGREP • Regexstudio.com • Kodos.sourceforge.net

  5. Analogi RE • RE dapatadianalogikandenganberbagaifungsipengolah string padabahasapemrograman yang belummendukung RE. Misalnyastrcmp(), length(), mid(), trim(), substr(), pos(), strstr() dll. • RE jugamiripdenganfungsi wildcard pada DOS/UNIX untukpengelolaan file. Misal: *.txt, a*.t?tataugrep/sed/awkdi Linux • Jikamenggunakan RE untukmencarikata “cat” maca “vacation” akanikutditemukan

  6. Kelebihan RE • Sangatampuhuntukmengeloladanmencocokkan file teksatau string • Sangatringkas, karenasintaks RE sangat “sederhana” • RE cepat, karenamenghindarikitamelakukanpemeriksaan manual dan RE cepatdalammencocokkanpola-polanya.

  7. Aturan RE • Leftmost-rightmost • Quantifier is greedy

  8. BagianUtama RE • Meta character: karakter-karakter yang memilikiartikhususdi RE danmewakilisekelompokkarakter lain ataupolakhusustertentu • Yang temasuk: *, ., [, ], (, ), ^, $, + dll • Literal character: karakter-karakterbiasa (yang diterjemahkanapaadanya) yang tidakmemilikiartikhusus

  9. Library RE • Setiap tool yang mengimplementasikan/menggunakan RE menggunakan library RE danmesin RE • Mesin RE adalah program yang menerima string pola RE danmengkompile-nyamenjadi RE tree yang berupamesin state. • Mesin RE akanberusahamencocokkansemuakemungkinandari RE untuk string yang dicocokkan. • Library RE yang terkenaladalah library PERL karenasangatcepatdan optimal

  10. BahasaPemrogramanPendukung RE • Java, dengan • Import java.util.regex.* • Import org.apache.regexp.RE.* • PHP mendukung RE POSIX (misalnya: ereg()) dan RE PCRE (misalnyapreg_match()). • Python (gunakan re) • .NET (gunakanSystem.Text.RegularExpression) • Delphi, Pascal dan C belummendukung RE

  11. Karakter Meta Dasar • Pemilihan (alternation) • Menggunakankarakter “|” yang menyimbolkanpemilihan • Sintaks: A1|A2|A3 dst • Dimana A1, A2, A3 adalah sub pola • Karakter “|” dibaca “atau” • Contohpola: • http|ftp|smftp, berartisalahsatu string http atau ftp atausmtpcocok. • Akancocokdengankalimat: http://www.uhamka.ac.idatauftp://ftp.students.uhamka.ac.id

  12. Karakter Meta Dasar • Pengelompokkan (grouping) • Menggunakankarakter “(“ dan “)” • contoh: Mahasiswateknik (informatika|elektro|mesin) UHAMKA • Akancocokdengan “Mahasiswateknikinformatika UHAMKA” atau“Mahasiswateknikelektro UHAMKA” atau “Mahasiswateknikmesin UHAMKA”

  13. Karakter Meta Dasar • Karakterapasaja (any character) • Menggunakankarakter “.” • Contoh: Anton… berartikalimat Antonius akancocok, tapitidakakancocokdengan Anton, Antony. Karenatandatitiknyaada 3 buah, makaberartikata Anton harusdiikutidengan 3 karakterapasaja

  14. Karakter Meta Dasar • Karakterkelas (character class/character sets) • Kumpulan karakterdigunakantanda “[“ dan “]” yang digunakanmendefinisikansekumpulankarakter yang cocok • Miripdenganpemilihan, hanyasajakelaskarakterhanyaberlakuuntuk 1 karaktertunggal • Di dalamkarakterkelas, dikenalkarakter range(-) dankarakternegasi (^)

  15. KarakterKelas • Contoh:

  16. Perhatian • Karakter-karakterseperti |, ., () yang merupakankarakter meta akanmenjadikarakter literal jikaadadidalamkarakterkelas. Contoh: [(a|b)] akanmenjadipolakarakter (a|b) bukankaraktersalahsatudari a atau b. Titikdidalamkelaskarakterakanmenjadikaraktertitiksebagaimanamestinyabukanmenjadikarakterapasaja. • Karakter – dan ^ akanmenjadikarakter meta dikelaskarakter. Tanda – berarti range dan ^ berartinegasi • Tanda – jikaberadadikelaskarakterbagianakhirakanmenjadikarakter literal. Contoh: [0-9-] berartikarakter 0 sampai 9 ataukarakter -

  17. Karakter Meta Dasar • Karakterjangkar/anchor • Tanda ^ berartiawalbaris/string • Tanda $ berartiakhir string • Akhir/awalbaris/string bergantungpada modifier atau mode operasinya • Karakter ^ dan $ tidakmewakilisuatukarakterapapuntapimewakiliposisi • Contoh: ^hariakancocokdengan “hariminggu”, “harimau” • Contoh: hari$ akancocokdengan “matahari” • ^$ berartibaris/string kosong

  18. Karakter Meta Dasar • Quantifier • Menggunakankarakter {} • Sintaks: P{m,n} atau P{m,} atau P{m} dimana P adalahpolasuaturegexdan m dan n adalah integer bilangan yang merupakanpembatasjumlahkeluaranpola • Contoh: [0-9]{3} berartikarakter 0-9 sebanyaktepat 3 kali muncul • [a-z]{2,3} berartikarakterantara a-z minimal 2 maksimal 3 kali muncul

  19. Karakter Meta Dasar • Optional (0 atau 1) • Menggunakankarakter ? Samaartinyadengan {0,1} • Contoh: colou?rcocokdengan color ataucolour • (July?) (fourth|4(th)?) cocokdengan July fourth, Jul fourth, July 4, July 4th, Jul 4, Jul 4th

  20. Karakter Meta Dasar • 0 ataulebih • Menggunakankarakter * samadengan {0,} • Arti * padaregexberbedadengan * pada wildcard • Arti .* padaregexartinya 0 ataulebihkarakterapasaja • 1 ataulebih • Menggunakantanda + samadengan {1,}

  21. Karakter Meta Dasar • Kelaskarakter digit (angka) • Sintaks: • \d samaartinyadengan [0-9] • \D samaartinyadengan [^0-9] • Kelaskarakterhuruf (alphanumerik) • Sintaks: • \w samaartinyadengan [0-9A-Za-z_] • \W samaartinyadengan [^0-9A-Za-z_]

  22. Regular Expression • Karakter whitespace • Sintaks: • \s termasukspasi, tabulasidan newline • \S artinya non whitespace • Word boundary (batasantarkata) • \b artinyaposisibatasantarkata • Awaldanakhir string merupakanbatasantarkata • Contoh: • ^saya\b akancocokdenganbaris yang diawali “saya” tapitidakcocokdengan “sayang” atau “sayatan”

  23. Karakter Meta Dasar • Awaldanakhirbaris/string • Selainmenggunakan ^ dan $ dapat pula menggunakan \A, \Z, \z • Karakter \A cocokdenganawal string • \Z cocokdenganakhir string atausebelumbarisselanjutnya • \z cocokdengankarakterterakhirdari string • Contoh: “kuku ku\nkakiku\nkaku\n” akancocokdengan \Akuku, \Akukuku, kaku\Z

  24. Karakter Meta Dasar • Escape karakter meta • Untukmenanganikarakter meta sebagaikarakterbiasaharusdilakukan escape • Dengancaramemberikarakter \ • Contoh: [a-z]\^d+ yang akanmencocokkan string seperti a^3, b^2 dst

  25. Karakter Meta Dasar • Escape Pola • Jikaterlalubanyak escape akanmembingungkandalammembacanya • Di beberapabahasapemrograman RE disediakan \Q … \E yang bergunamengapitsubpola yang dijadikan literal • Contoh: \Q…*\E akanmencari string …*

  26. Match Group • Untukmengambil/mengingatsubpoladarikeseluruhanpola yang terpilihdigunakantandakurung () • Subpolaituakandiingatoleh RE dandapatdipanggilkembalidengankarakter meta \1, \2 dstuntuksetiapsubpola yang ditangkapsesuaiurutankemunculan

  27. Non Greedy Matching • Sintaks: • *?, +?, ??, {n}?, {m,n}?, {n,}? • Untukmendapatkanpolasesedikitmungkin • Contoh: “mahasiswiinformatika UHAMKA” • Pola: maha(.+)I • Maka yang didapatadalah: “mahasiswiinformati” • Hal inikarena RE memilikisifat greedy yaitumengambilseluruhtekshinggahuruf I terakhir. Padahalmaksudkitaadalahmendapatkan string “mahasi”, pencocokansesedikitmungkin • Non greedy akanmampumelakukanitudenganmengubahpolamenjadi: maha(.+?)i

  28. Non greedy matching • Non greedy hanyacocokuntukmencocokkanpoladibagiantengahsaja, bukanpadaakhir string • Contoh: komen(.*?) bermaksudmendapatkan string “komentar” tapi yang didapatadalah “komen”. Karena non greedy akanmencocokkan .*? Sebagai 0 ataulebihkarakterdan yang diambiladalah yang paling sedikityaitu 0 karakter • Sedangkanjikapolamenjadikomen(.+?), maka yang didapathanya “koment” karena .+ akanmencocokkan 1 ataulebihkarakter, dan yang diambilhanya 1 karaktersaja

  29. Non Capturing Group • Sintaks: • (?:P), dimana P adalahsubpola • Contoh: • Pola: ((\(\d{3,4}\))-(\d+)) • String: (0274)-515278 • \0 menghasilkan(0274)-515278 • \1 menghasilkan (0274)-515278 • \2 menghasilkan (0274) • \3 menghasilkan 515278 • Jikamenggunakan non-capturing group polaakanmenjadipola: (?:(\(\d{3,4}\))-(\d+)) • \0 menghasilkan(0274)-515278 • \1 menghasilkan (0274) • \2 menghasilkan 515278

  30. Positive Look • Positive Look Ahead • Sintaks: • (?=P) P adalahsubpola • Polainimencaripola yang diikutiolehpolatertentu • Contoh: • Awal: \w+\s*(\d), cocokdgn string anton 123 • Sekarang: \w+\s*(?=\d), cocokdgn string anton 123 • Positive Look Behind • Sintaks: • (?<=P) • Polainiakanmencaripolatertentu yang didahuluiolehpolatertentu • Contoh: • Awal: \d\s*[a-z]+, cocokdgn string 123 anton • Sekarang : (?<=\d)\s*[a-z]+, cocokdgn string 123 anton

  31. Negative Look • Negative look ahead • Untukmencari string yang tidakdiikutiolehpolatertentu • Sintaks: (?!=P) • Contoh: \w+(?!=\s\d) • Mencarikata yang tidakdiikutiolehspasidanangka • Negative look behind • Untukmencari string yang tidakdidahuluiolehpolatertentu • Sintaks: (?<!P) • Contoh: (?<!\d\s)\w+ • Mencarikata yang tidakdidahuluiolehpolatertentu

More Related