Không sử dụng biểu thức thông thường:
- Khi có trình phân tích cú pháp.
Điều này không giới hạn đối với HTML . Một XML hợp lệ đơn giản không thể được phân tích cú pháp một cách hợp lý bằng một biểu thức chính quy, ngay cả khi bạn biết lược đồ và bạn biết nó sẽ không bao giờ thay đổi.
Đừng thử, ví dụ, phân tích mã nguồn C # . Thay vào đó, phân tích cú pháp để có được cấu trúc cây có ý nghĩa hoặc mã thông báo.
- Tổng quát hơn, khi bạn có công cụ tốt hơn để thực hiện công việc của mình.
Điều gì nếu bạn phải tìm kiếm một lá thư, cả nhỏ và vốn? Nếu bạn thích biểu thức thông thường, bạn sẽ sử dụng chúng. Nhưng không phải dễ dàng hơn / nhanh hơn / dễ đọc hơn khi sử dụng hai tìm kiếm, lần lượt từng cái một? Có thể trong hầu hết các ngôn ngữ, bạn sẽ đạt được hiệu suất tốt hơn và làm cho mã của bạn dễ đọc hơn.
Ví dụ, mã mẫu trong câu trả lời của Ingo là một ví dụ hay khi bạn không được sử dụng các biểu thức thông thường. Chỉ cần tìm kiếm foo
, sau đó cho bar
.
- Khi phân tích chữ viết của con người.
Một ví dụ tốt là một bộ lọc tục tĩu. Nói chung, không chỉ là một ý tưởng tồi để thực hiện nó, mà bạn có thể bị cám dỗ thực hiện nó bằng cách sử dụng các biểu thức thông thường, và bạn sẽ làm sai. Có rất nhiều cách một con người có thể viết một từ, một số, một câu và sẽ được một người khác hiểu, nhưng không phải là biểu hiện thông thường của bạn. Vì vậy, thay vì bắt những lời tục tĩu thực sự, biểu hiện thường xuyên của bạn sẽ dành thời gian làm tổn thương người dùng khác.
- Khi xác nhận một số loại dữ liệu.
Ví dụ: không xác thực địa chỉ email thông qua biểu thức chính quy. Trong hầu hết các trường hợp, bạn sẽ làm sai. Trong một trường hợp hiếm hoi, bạn sẽ làm đúng và kết thúc với kinh dị mã hóa dài 6 343 ký tự .
Nếu không có các công cụ phù hợp, bạn sẽ phạm sai lầm. Và bạn sẽ nhận thấy chúng vào giây phút cuối cùng, hoặc có thể không bao giờ. Nếu bạn không quan tâm đến mã sạch, bạn sẽ viết một chuỗi hai mươi dòng không có nhận xét, không có khoảng trắng, không có dòng mới.
- Khi mã của bạn sẽ được đọc. Và sau đó đọc lại, và lặp đi lặp lại, mỗi lần bởi các nhà phát triển khác nhau.
Nghiêm túc mà nói, nếu tôi lấy mã của bạn và phải xem lại hoặc sửa đổi nó, tôi không muốn mất một tuần để cố gắng hiểu rất nhiều chuỗi ký hiệu dài hai mươi dòng.