Jangan gunakan ekspresi reguler:
Ini tidak terbatas pada HTML . XML sederhana yang valid tidak dapat diurai secara wajar dengan ekspresi reguler, bahkan jika Anda tahu skema dan Anda tahu itu tidak akan pernah berubah.
Jangan coba, misalnya, mengurai kode sumber C # . Alih-alih, untuk mendapatkan struktur pohon yang bermakna atau token.
- Lebih umum, ketika Anda memiliki alat yang lebih baik untuk melakukan pekerjaan Anda.
Bagaimana jika Anda harus mencari surat, baik kecil maupun modal? Jika Anda menyukai ekspresi reguler, Anda akan menggunakannya. Tetapi bukankah lebih mudah / cepat / mudah dibaca untuk menggunakan dua pencarian, satu demi satu? Peluangnya dalam kebanyakan bahasa Anda akan mencapai kinerja yang lebih baik dan membuat kode Anda lebih mudah dibaca.
Misalnya kode sampel dalam jawaban Ingo adalah contoh yang baik ketika Anda tidak boleh menggunakan ekspresi reguler. Cukup cari foo
, lalu untuk bar
.
- Saat parsing tulisan manusia.
Contoh yang baik adalah filter kecabulan. Bukan hanya itu adalah ide yang buruk secara umum untuk mengimplementasikannya, tetapi Anda mungkin tergoda untuk melakukannya dengan menggunakan ekspresi reguler, dan Anda akan melakukannya dengan salah. Ada banyak cara manusia dapat menulis kata, angka, kalimat dan akan dipahami oleh manusia lain, tetapi bukan ekspresi reguler Anda. Jadi, alih-alih menangkap kecabulan nyata, ekspresi reguler Anda akan menghabiskan waktunya untuk menyakiti pengguna lain.
- Saat memvalidasi beberapa jenis data.
Misalnya, jangan memvalidasi alamat email melalui ekspresi reguler. Dalam kebanyakan kasus, Anda akan melakukannya dengan salah. Dalam kasus yang jarang terjadi, Anda akan melakukannya dengan benar dan selesai dengan horor pengkodean sepanjang 6 343 karakter .
Tanpa alat yang tepat, Anda akan membuat kesalahan. Dan Anda akan melihat mereka pada saat terakhir, atau mungkin tidak pernah. Jika Anda tidak peduli dengan kode bersih, Anda akan menulis string dua puluh baris tanpa komentar, tanpa spasi, tanpa baris baru.
- Kapan kode Anda akan dibaca. Dan kemudian baca lagi, dan lagi dan lagi, setiap kali oleh pengembang yang berbeda.
Serius, jika saya mengambil kode Anda dan harus memeriksanya atau memodifikasinya, saya tidak ingin menghabiskan waktu seminggu untuk mencoba memahami dua puluh baris string panjang banyak simbol.