2008-10-26 13 views
8

क्या रेगेक्स का उपयोग किए बिना तारों की खोज करते समय वाइल्डकार्ड ("*") का समर्थन करने का कोई आसान तरीका है?मैं पाइथन में उपयोगकर्ता द्वारा परिभाषित खोज तारों में वाइल्डकार्ड का समर्थन कैसे कर सकता हूं?

उपयोगकर्ता वाइल्डकार्ड का उपयोग खोज शब्दों में प्रवेश करने की अपेक्षा की जाती है, लेकिन रेगुलर एक्सप्रेशन से की जटिलता से निपटने के लिए नहीं करना चाहिए था:

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

(यह और अधिक जटिल है जब वहाँ अनेक खोज शब्द यद्यपि हैं हो जाता है, उदाहरण के लिए "foo बार बाज़ ")

यह एक आम समस्या की तरह लगता है, इसलिए मुझे आश्चर्य है कि इसके लिए तैयार समाधान है या नहीं।

किसी भी मदद की सराहना की जाएगी!

+0

सामान्य प्रोग्रामिंग प्रश्न पूछने के लिए, कृपया अपने प्रश्न को "समुदाय विकी" के रूप में चिह्नित न करें। इस तरह के प्रश्न के लिए कोई भी (आप सहित) को कोई प्रतिष्ठा नहीं मिलती है। मैं देखता हूं कि आप यहां नए हैं, इसलिए कोई चिंता नहीं, अगली बार इसे ध्यान में रखें। –

+0

नियमित अपवादों के साथ क्या गलत है? – Hortitude

+0

सबसे पहले, इसके नियमित ** अभिव्यक्ति **। दूसरा, क्या इनपुट में किसी भी चीज़ से बचने के लिए पर्याप्त आसान नहीं होगा जिसे रेगेक्स से बचने की आवश्यकता है, '*' '' * * में बदल दें और इसे रेगेक्स मॉड्यूल के माध्यम से चलाएं? –

उत्तर

14

आप fnmatch मॉड्यूल को आजमा सकते हैं, इसे एक शेल-जैसे वाइल्डकार्ड वाक्यविन्यास मिला है।

संबंधित मुद्दे

 संबंधित मुद्दे