कोई कंप्यूटर कार्यक्रम एम वैध मैचों की सूची में आधारित पर आधारित एक सार्थक नियमित अभिव्यक्ति उत्पन्न करने में सक्षम होगा। मुझे आपको दिखाने दो क्यों।
मान लीजिए आप उदाहरण देते हैं 111111 और 999999, कंप्यूटर उत्पन्न करनी चाहिए:
- एक रेगुलर एक्सप्रेशन मिलान का वास्तव में उन दो उदाहरण:
(111111|999999)
- 6 समान अंक
(\d)\1{5}
- एक regex मिलान 6 मिलान एक regex वाले और नाइन
[19]{6}
- किसी भी 6 अंक
\d{6}
- से मेल खाने वाला एक रेगेक्स शब्द सीमाओं के साथ तीन से ऊपर, उदा।
\b\d{6}\b
- पहले तीन में से कोई भी, अंक से पहले या उसके बाद नहीं, उदा।
(?<!\d)\d{6}(?!\d)
आप देख सकते हैं, वहाँ कई तरीके है जिसमें उदाहरण के लिए रेगुलर एक्सप्रेशन में सामान्यीकृत किया जा सकता है। कंप्यूटर के अनुमानित नियमित अभिव्यक्ति का निर्माण करने का एकमात्र तरीका आपको सभी संभावित मैचों की सूची की आवश्यकता है। फिर यह एक खोज पैटर्न उत्पन्न कर सकता है जो वास्तव में उन मैचों से मेल खाता है।
यदि आप सभी संभावित मैचों को सूचीबद्ध नहीं करना चाहते हैं, तो आपको उच्च-स्तरीय विवरण की आवश्यकता है। यही वह है जो नियमित अभिव्यक्तियों को प्रदान करने के लिए डिज़ाइन किया गया है। 6 अंकों की संख्याओं की लंबी सूची प्रदान करने के बजाय, आप प्रोग्राम को "किसी भी छः अंकों" से मेल खाने के लिए कहते हैं। नियमित अभिव्यक्ति वाक्यविन्यास में, यह \ d {6} बन जाता है।
नियमित अभिव्यक्ति के रूप में लचीला होने वाला उच्च-स्तरीय विवरण प्रदान करने की कोई भी विधि नियमित अभिव्यक्तियों के रूप में जटिल होगी। RegexBuddy जैसे सभी टूल्स उच्च स्तर के विवरण को बनाने और परीक्षण करना आसान बना सकते हैं। सीधे terse नियमित अभिव्यक्ति वाक्यविन्यास का उपयोग करने के बजाय, RegexBuddy आपको सादे अंग्रेजी भवन ब्लॉक का उपयोग करने में सक्षम बनाता है। लेकिन यह आपके लिए उच्च स्तरीय विवरण नहीं बना सकता है, क्योंकि यह जादुई रूप से नहीं जान सकता है कि इसे आपके उदाहरणों को सामान्यीकृत करना चाहिए और जब यह नहीं होना चाहिए।
यह निश्चित रूप से एक उपकरण बनाना संभव है जो उपयोगकर्ता द्वारा नियमित अभिव्यक्ति उत्पन्न करने के लिए प्रदान किए गए दिशानिर्देशों के साथ नमूना पाठ का उपयोग करता है। इस तरह के एक उपकरण को डिजाइन करने में कठिन हिस्सा यह है कि उपयोगकर्ता को नियमित रूप से अभिव्यक्तियों से सीखने के लिए कठिन परिश्रम किए बिना, और सामान्य रेगेक्स नौकरियों या सरल नियमित अभिव्यक्तियों के लिए टूल को प्रतिबंधित किए बिना, मार्गदर्शिका की जानकारी के लिए उपयोगकर्ता से यह कैसे पूछता है।
स्रोत
2009-03-07 01:42:42
मुझे आश्चर्य है कि किसी ने भी उल्लेख नहीं किया है [रेगेक्स :: प्रीसफ] (http://search.cpan.org/~jhi/Regex-PreSuf-1.17/PreSuf.pm) – tripleee