2008-10-26 25 views
8

Có cách nào đơn giản để hỗ trợ các ký tự đại diện ("*") khi tìm kiếm chuỗi - mà không sử dụng RegEx?Làm cách nào tôi có thể hỗ trợ các ký tự đại diện trong chuỗi tìm kiếm do người dùng xác định bằng Python?

Người dùng có nghĩa vụ phải nhập điều kiện tìm kiếm sử dụng ký tự đại diện, nhưng không cần phải đối phó với sự phức tạp của RegEx:

"foo*" => str.startswith("foo") 
"*foo" => str.endswith("foo") 
"*foo*" => "foo" in str 

(nó trở nên phức tạp hơn khi có nhiều thuật ngữ tìm kiếm mặc dù, ví dụ: "foo bar baz ")

Điều này có vẻ như là một vấn đề phổ biến, vì vậy tôi tự hỏi liệu có giải pháp làm sẵn cho nó hay không.

Bất kỳ trợ giúp nào sẽ được đánh giá rất nhiều!

+0

Đối với câu hỏi lập trình bình thường, xin đừng đánh dấu câu hỏi của bạn là "wiki cộng đồng". Không ai (kể cả bạn) nhận được bất kỳ danh tiếng nào cho loại câu hỏi đó. Tôi thấy bạn mới ở đây, vì vậy đừng lo lắng, hãy ghi nhớ điều đó trong lần sau. –

+0

Có gì sai với ngoại lệ thông thường? – Hortitude

+0

Tắt đầu tiên, biểu thức ** thông thường **. Thứ hai, nó sẽ không được dễ dàng, đủ để thoát khỏi bất cứ điều gì trong đầu vào cần thoát cho regex, biến '*' thành '. *' Và chạy nó thông qua các mô-đun regex? –

Trả lời

14

Bạn có thể thử các module fnmatch, nó có một cú pháp wildcard vỏ như thế nào.

Các vấn đề liên quan