Kebanyakan pemrogram memiliki titik buta. Mereka akan dengan senang hati melakukan debugging pada sistem terdistribusi atau bergulat dengan framework baru, namun mereka akan menghabiskan waktu dua puluh menit untuk melakukan pengeditan teks secara manual yang seharusnya hanya memakan waktu sepuluh detik. Alasannya selalu sama: ekspresi reguler terlihat seperti derau baris (line noise). Pola tipikalnya adalah tumpukan garis miring, garis miring terbalik, dan tanda baca yang tampak seperti dikirim dari modem tahun 1990-an. Kekacauan visual tersebut menakut-nakuti orang-orang yang kompeten untuk mempelajari keterampilan yang sebenarnya sangat berharga.

Kabar baiknya adalah regex tidaklah sulit. Ia hanya padat. Simbol-simbolnya memadatkan makna yang sangat besar ke dalam ruang yang kecil, sehingga mata Anda membaca keacakan padahal sebenarnya itu adalah deskripsi yang sangat presisi. Begitu Anda memiliki model mental yang tepat, Anda akan berhenti mencoba mendekode simbol satu per satu dan sebaliknya mulai membaca bentuk yang mereka deskripsikan. Saat Anda melakukannya, derau tersebut akan hilang sepenuhnya.

Sebuah Pola, Bukan Sebuah Program

Perubahan mendasar adalah memahami apa sebenarnya ekspresi reguler itu. Sebagian besar kode yang Anda tulis bersifat prosedural: lakukan ini, lalu lakukan itu, periksa kondisi ini, ulangi lagi. Regex bukanlah sebuah prosedur. Ia adalah pola statis yang mendeskripsikan seperti apa teks tersebut seharusnya. Anda tidak sedang menulis instruksi tentang cara mencari; Anda sedang memberikan sketsa kepada mesin pencocokan dan membiarkannya yang bekerja.

Anggaplah seperti mendeskripsikan bentuk dalam bahasa manusia yang sederhana:

  • Sebuah angka lima digit.
  • Sebuah alamat email.
  • Sebuah baris yang dimulai dengan huruf kapital.

Hanya itu yang dilakukan regex, kecuali ia menggunakan alfabet yang terkompresi. Saat Anda melihat \d{5}, Anda tidak sedang melihat keajaiban. Anda sedang melihat "sebuah digit, sebanyak lima kali." Saat Anda melihat ^[A-Z], Anda sedang melihat "awal baris, diikuti oleh satu huruf kapital." Keahliannya bukan pada menghafal. Melainkan belajar untuk sekilas melihat pola tersebut dan menerjemahkannya kembali ke dalam deskripsi bahasa manusia yang sederhana tersebut. Begitu Anda bisa melakukan penerjemahan itu, faktor intimidasi akan hilang.

Ke Mana Sebenarnya Waktu Terbuang

Orang cenderung mempelajari regex hanya setelah mereka cukup menderita. Pendekatan yang lebih baik adalah mengenali tugas-tugas yang membutuhkan pola sebelum Anda membuang-buang waktu satu sore untuk mengerjakannya.

Jika Anda perlu menemukan setiap tanggal dalam dokumen setebal dua ratus halaman, regex akan menemukannya dalam satu kali jalan. Jika Anda perlu memvalidasi apakah pengguna mengetik URL yang nyata sebelum aplikasi Anda menerimanya, sebuah pola dapat menegakkan bentuk dasar dari alamat tersebut. Jika Anda sedang merapikan teks yang disalin dari sebuah situs web dan perlu menggabungkan beberapa spasi menjadi satu spasi tunggal, regex pengganti hanya membutuhkan empat karakter. Jika Anda sedang mengekstrak data dari log server yang berantakan, regex sering kali menjadi satu-satunya jembatan yang masuk akal antara teks tidak terstruktur dan laporan terstruktur.

Berikut adalah aturan sederhana untuk diterapkan: jika Anda hendak melakukan pengeditan teks sebanyak lima puluh kali secara manual, berhentilah. Buatlah sebuah pola sebagai gantinya. Pengulangan manual tidak hanya lambat; ia juga tidak dapat diandalkan. Anda mungkin akan melewatkan kemunculan ke-empat puluh tujuh atau membuat kesalahan ketik pada kemunculan ke-tiga puluh tiga. Sebuah pola melakukan pekerjaan tersebut satu kali, dengan benar, dan ia mendokumentasikan aturan yang Anda terapkan sejak awal.

Siklus Pembelajaran yang Berhasil

Jangan mencoba mengetik pola yang sempurna dari ingatan. Begitulah rasa frustrasi mulai muncul. Sebaliknya, ikuti siklus ketat yang membuat Anda terus maju tanpa tersesat dalam sintaksis.

  1. Deskripsikan bentuknya dengan kata-kata. Sebelum Anda menyentuh karakter khusus, tuliskan dengan tepat apa yang Anda inginkan. "Empat digit, diikuti oleh tanda hubung, diikuti oleh dua digit, diikuti oleh tanda hubung, diikuti oleh dua digit." Jika Anda tidak dapat mengatakannya dengan jelas, Anda tidak dapat membuat polanya.
  2. Buat draf pertama. Ubah deskripsi Anda menjadi pola dasar menggunakan simbol-simbol yang paling luas dan masuk akal. Jangan khawatir tentang kesempurnaan. Anda sedang membangun sebuah prototipe,