Tôi có danh sách khoảng 120 nghìn từ tiếng Anh (về cơ bản là mỗi từ trong ngôn ngữ).Biểu thức chính quy Ký tự đại diện
Tôi cần cụm từ thông dụng cho phép tìm kiếm thông qua các từ này bằng ký tự đại diện, a.k.a. *
và ?
.
Một vài ví dụ:
- nếu người dùng tìm kiếm
m?st*
, nó sẽ phù hợp với ví dụmaster
hoặcmister
hoặcmistery
. - nếu người dùng tìm kiếm
*ind
(bất kỳ từ nào kết thúc bằngind
), nó sẽ khớp vớiwind
hoặcbind
hoặcblind
hoặcgrind
.
Bây giờ, hầu hết người dùng (đặc biệt là những người không quen thuộc với biểu thức thông thường) biết rằng ?
là một sự thay thế cho chính xác 1 nhân vật, trong khi *
là một sự thay thế cho 0, 1 hoặc nhiều ký tự. Tôi hoàn toàn muốn xây dựng tính năng tìm kiếm của mình dựa trên điều này.
Câu hỏi của tôi là: Làm cách nào để chuyển đổi những gì người dùng nhập (ví dụ: m?st*
) thành cụm từ thông dụng?
Tôi tìm kiếm trên web (rõ ràng bao gồm trang web này) và tất cả những gì tôi có thể tìm thấy là hướng dẫn cố gắng dạy cho tôi quá nhiều hoặc câu hỏi tương tự nhưng không đủ để cung cấp câu trả lời cho vấn đề của riêng tôi.
Tất cả những gì tôi có thể tìm ra là tôi phải thay thế ?
bằng .
. Vì vậy, m?st*
trở thành m.st*
. Tuy nhiên, tôi không có ý tưởng gì để thay thế *
bằng.
Mọi trợ giúp sẽ được đánh giá cao. Cảm ơn bạn.
PS: Tôi hoàn toàn mới đối với cụm từ thông dụng. Tôi biết họ có thể mạnh mẽ như thế nào, nhưng tôi cũng biết rằng họ có thể rất khó học. Vì vậy, tôi không bao giờ dành thời gian làm cho nó ...
bản sao có thể có của [Có tương đương với java.util.regex cho mẫu kiểu "glob" không?] (Http://stackoverflow.com/questions/1247772/is-there-an-equivalent-of-java- util-regex-for-glob-type-patterns) – NPE
Hãy nhớ rằng bất kỳ * ký tự regex * nào khác có thể xuất hiện trong truy vấn của bạn cũng sẽ phải được thoát. Nếu ai đó gõ vào '^ \ w..' bạn có thể không muốn truyền nó tới công cụ biểu thức thông thường của bạn ở dạng thô của nó – Gareth
@Gareth Cảm ơn bạn, tôi sẽ nhớ điều đó. –