Yudi Supriyadi
2 min readSep 6, 2017

Cara Berpikir Saya Memahami Regular Expression

Cara saya berpikir mugi-mugi menjadi penolong pembaca memahami pattern regex. Cara berpikir != cara kerja regex. Penuh opini.

Dot

Matches any character except line breaks

Diberikan sebuah pattern sebagai berikut.

'.+'

Dari kiri-ke-kanan, bila kita step-by-step mengeksekusi setiap bagian terkecil dari pattern maka akan seperti dibawah ini.

(1) yang diawali dengan tanda kutip,

maaf tanda “+” di akhir itu kesalahan

(2) lalu, diikuti sebuah karakter apa saja kecuali line breaks,

maaf tanda “+” di akhir itu kesalahan

(3) dengan tanda + maka makna sebuah menjadi 1-or-more

Saya membayangkan pattern '.+ adalah sebuah iterasi while (char != “line break”) yang dimulai dari karakter setelah tanda kutip. Sehingga akan sinkron antara cara berpikir saya dengan gambar di atas.

Ada 2 tanda kutip di teks kita, seharusnya 2 match tetapi melihat pojok kanan atas gambar memberi informasi hanya ada 1 match.

‘aaaaa abbbbb’ aaaaggg (1)

’ aaaaggg (2)

Mengingat ' juga termasuk ke dalam DOT dan mungkin yang sudah ter-highlight tidak bisa di-highlight dua kali, tidak bisa tumpang tindih. Maka saya pun bisa berpikir yang areanya paling jauh itu yang diambil.

(4) terakhir diakhiri dengan tanda kutip (‘)

dari langkah #3 kita tau highlight-nya memanjang hingga akhir baris lalu menyusut hingga menemukan tanda kutip. Seakan-akan iterasi while mundur sampai menemukan karakter yang diinginkan.

Grouping

bila menemukan pattern seperti (a|b|c) maka seakan seperti:

if (char = 'a' OR char = 'b' OR char = 'c')

ini untuk sebuah karakter.

Apabila ditambah tanda + sehingga menjadi (a|b|c)+ maka akan seperti:

while (char = 'a' OR char = 'b' OR char = 'c')

dan highlight akan berhenti ketika false.

Arti match adalah teks yang cocok dengan pattern kita. Di bawah adalah 2 match.

No responses yet