मुझे फाइल सिस्टम वाइल्डकार्ड एक्सप्रेशन की तुलना करने की आवश्यकता है ताकि यह देखने के लिए कि उनके परिणाम ओवरलैप हो जाएं, केवल अभिव्यक्तियों की जांच/तुलना करके।वाइल्डकार्ड के साथ फ़ाइल नाम खोज पैटर्न में टकराव की जांच
उदाहरण के लिए, हम एक उपयोगिता बना रहे हैं जो फ़ाइल सिस्टम वाइल्डकार्ड अभिव्यक्तियों के आधार पर फ़ाइलों को एक (या अधिक स्थानों) से अलग फ़ोल्डर में सॉर्ट करेगा। उदाहरण के लिए: * .txt फ़ोल्डर में जाता है, * .doc फ़ोल्डर बी में जाता है, और इसी तरह। वाइल्डकार्ड वर्ण जो हम समर्थन करेंगे * और?
मैं वाइल्डकार्ड अभिव्यक्तियों का विश्लेषण करने से निर्धारित करने में सक्षम होना चाहता हूं, चाहे वे संघर्ष/ओवरलैप हों।
उदाहरण के लिए, अगर मैं निम्नलिखित भाव है:
*.x.y *.y
वे संघर्ष करेंगे (ओवरलैप) क्योंकि दूसरी अभिव्यक्ति * .y * .x.y परिणाम भी शामिल होगा। (उदा। एएक्सई दोनों अभिव्यक्तियों से मेल खाते हैं)
मैं सभी अभिव्यक्तियों का उपयोग करके पेड़ की संरचना का निर्माण करके इस पर आ रहा हूं, यह समझते हुए कि अभिव्यक्ति संघर्ष होने पर पेड़ बनाने का बहुत ही असफल हो जाएगा।
For example: *.x a.b a.c b.d might create a tree like +-*-.-x | start +--+ | +-b | | +-a-.-+-c | | +-b-.-d
अगर मैं पैटर्न b.x जोड़ने का प्रयास करते, पेड़ * .x मार्ग का अनुसरण सफल हो सकता है, और इस तरह का कहना है कि पैटर्न पहले से ही मौजूद है।
क्या मैं सही दिशा में जा रहा हूं? या इस पर हमला करने के लिए एक ज्ञात एल्गोरिदम है?
'*' का अर्थ है 'पिछले चरित्र सेट के 0-से-कई उदाहरण'। '*' से शुरू होने वाली अभिव्यक्ति का कोई मतलब नहीं है। –
@AndrewShepherd "फ़ाइल वाइल्डकार्ड अभिव्यक्तियाँ"! = "Regex"। –
क्या आप कानूनी "वाइल्डकार्ड अभिव्यक्ति" के व्याकरण को सावधानी से परिभाषित कर सकते हैं? से चुनने के लिए कई अलग-अलग मानक हैं। –