Kebanyakan pengatur cara mempunyai titik buta. Mereka dengan senang hati menyahpepijat sistem teragih atau bergelut dengan rangka kerja baharu, namun mereka akan menghabiskan masa dua puluh minit melakukan suntingan teks secara manual yang sepatutnya hanya mengambil masa sepuluh saat. Sebabnya sentiasa sama: ekspresi regular kelihatan seperti hingar talian. Corak tipikalnya adalah dinding tanda serong, tanda serong songsang, dan tanda baca yang seolah-olah dihantar dari modem tahun 1990-an. Kekacauan visual ini menakutkan orang yang berkemampuan daripada menguasai kemahiran yang benar-benar berharga.
Berita baiknya ialah regex tidaklah sukar. Ia cuma padat. Simbol-simbolnya memuatkan jumlah makna yang sangat besar dalam ruang yang kecil, jadi mata anda membaca ketidakteraturan di mana sebenarnya terdapat huraian yang sangat tepat. Sebaik sahaja anda mempunyai model mental yang betul, anda akan berhenti cuba menyahkod simbol satu demi satu dan sebaliknya membaca bentuk yang digambarkannya. Apabila anda berbuat demikian, kekacauan tersebut akan hilang sepenuhnya.
Satu Corak, Bukan Satu Program
Anjakan asasnya adalah memahami apa sebenarnya ekspresi regular itu. Kebanyakan kod yang anda tulis adalah prosedural: buat ini, kemudian buat itu, semak syarat ini, ulang semula. Regex bukanlah satu prosedur. Ia adalah corak statik yang menerangkan bagaimana rupa sesuatu teks. Anda bukan menulis arahan tentang cara untuk mencari; anda sedang menyerahkan lakaran kepada enjin padanan dan membiarkannya melakukan kerja tersebut.
Fikirkan ia sebagai menerangkan bentuk dalam bahasa Inggeris yang mudah:
- Nombor lima digit.
- Alamat e-mel.
- Baris yang bermula dengan huruf besar.
Itulah sahaja yang dilakukan oleh regex, cuma ia menggunakan abjad yang dimampatkan. Apabila anda melihat \d{5}, anda tidak melihat magis. Anda melihat "satu digit, sebanyak lima kali." Apabila anda melihat ^[A-Z], anda melihat "permulaan baris, diikuti oleh satu huruf besar." Kemahiran ini bukanlah tentang hafalan. Ia adalah tentang belajar untuk melihat corak tersebut sepintas lalu dan menterjemahkannya semula ke dalam huraian bahasa Inggeris yang mudah tadi. Sebaik sahaja anda boleh melakukan terjemahan itu, faktor gerun akan hilang.
Ke Mana Sebenarnya Masa Terbuang
Orang cenderung mempelajari regex hanya selepas mereka mengalami kesukaran yang cukup. Pendekatan yang lebih baik adalah dengan mengenali tugasan yang memerlukan corak sebelum anda membazirkan waktu petang anda untuknya.
Jika anda perlu mencari setiap tarikh dalam dokumen setebal dua ratus halaman, regex akan menemuinya dalam satu pusingan tunggal. Jika anda perlu mengesahkan sama ada pengguna menaip URL yang sah sebelum aplikasi anda menerimanya, satu corak boleh menguatkuasakan bentuk asas alamat tersebut. Jika anda sedang membersihkan teks yang disalin dari laman web dan perlu mengecilkan ruang berganda menjadi satu ruang tunggal, regex penggantian hanya memerlukan empat aksara. Jika anda sedang mengekstrak data daripada log pelayan yang berselerak, regex selalunya merupakan satu-satunya jambatan yang munasabah antara teks tidak berstruktur dan laporan berstruktur.
Berikut adalah peraturan mudah untuk diamalkan: jika anda bakal melakukan suntingan teks sebanyak lima puluh kali secara manual, berhentilah. Tulis satu corak sebagai ganti. Pengulangan manual bukan sahaja lambat; ia juga tidak boleh dipercayai. Anda mungkin terlepas kali ke-empat puluh tujuh atau melakukan kesilapan menaip pada kali ke-tiga puluh tiga. Corak melakukan kerja itu sekali, dengan betul, dan ia mendokumentasikan peraturan yang anda gunakan pada asalnya.
Kitaran Pembelajaran yang Berkesan
Jangan cuba menaip corak yang sempurna daripada ingatan. Begitulah cara kekecewaan mula timbul. Sebaliknya, ikuti kitaran mantap yang memastikan anda terus maju tanpa tersesat dalam sintaks.
- Terangkan bentuk dalam perkataan. Sebelum anda menyentuh sebarang aksara khas, tuliskan dengan tepat apa yang anda mahukan. "Empat digit, diikuti dengan sempang, diikuti dengan dua digit, diikuti dengan sempang, diikuti dengan dua digit." Jika anda tidak dapat menyatakannya dengan jelas, anda tidak dapat membina coraknya.
- Hasilkan draf pertama. Tukarkan huraian anda kepada corak asas menggunakan simbol yang paling luas dan munasabah. Jangan risau tentang kesempurnaan. Anda sedang membina sebuah prototaip,
