Tôi đang phát triển một ứng dụng mà người dùng nhập cụm từ thông dụng làm tiêu chí lọc, tuy nhiên tôi không muốn mọi người (dễ) có thể nhập .*
(tức là phù hợp với bất cứ điều gì). Vấn đề là, nếu tôi chỉ sử dụng if (expression == ".*")
, thì điều này có thể dễ dàng được sidestepped bằng cách nhập một cái gì đó chẳng hạn như .*.*
.Tôi có thể sử dụng một biểu thức chính quy để xem liệu nó có giảm xuống không. *
Có ai biết thử nghiệm có thể lấy một phần của regex và xem liệu về cơ bản là .*
nhưng ở dạng hơi phức tạp hơn?
những suy nghĩ của tôi là:
tôi có thể thấy nếu biểu thức là một hoặc nhiều lần lặp lại của
.*
, (tức là nếu nó phù hợp với(\.\*)+
(trích dẫn/thoát có thể không hoàn toàn chính xác, nhưng bạn sẽ có được ý tưởng). vấn đề với điều này là có thể có các hình thức khác của việc viết một trận đấu quốc tế (ví dụ với$
và^
) mà là quá đầy đủ để thậm chí nghĩ về trả trước, chúng ta hãy cùng thử nghiệm.tôi có thể thử nghiệm một vài cách ngẫu nhiên tạo ra các chuỗi với nó và giả sử t mũ nếu tất cả đều vượt qua, người dùng đã nhập mẫu phù hợp trên toàn cầu. Vấn đề với cách tiếp cận này là có thể có những tình huống mà biểu thức là đủ chặt chẽ và tôi chỉ chọn chuỗi xấu để phù hợp với.
Suy nghĩ, bất kỳ ai?
(FYI, ứng dụng là trong Java nhưng tôi đoán đây là chi tiết của một câu hỏi thuật toán hơn một cho một ngôn ngữ cụ thể.)
OK, tôi nghĩ một số ký tự dấu hoa thị mà tôi đưa vào có thể đã bị loại bỏ. Kiểm tra bình đẳng trong đoạn đầu tiên cần phải có một trong, cũng như các văn bản thay thế mà một người lén lút có thể sử dụng. Trong mọi trường hợp, tôi chắc chắn bạn nhận được điểm ... – user1056788
Ồ, bạn cần một biểu thức chính quy để kiểm tra các cụm từ thông dụng nhất định, cách meta. Thú vị khi thấy câu trả lời cho câu trả lời này. Xem [báo giá ở đầu bài đăng đó] (http://www.codinghorror.com/blog/2008/06/regular-expressions-now-you-have-two-problems.html): bây giờ bạn có 3 vấn đề ! – Jeroen
Tương tự như http://stackoverflow.com/questions/2131239/distance-between-regular-expression, nhưng không phải là một dupe tôi nghĩ. – dsolimano