मेरे पास तार की एक सूची है। उनमें से कुछ फॉर्म के हैं 123-...456। चर भाग "..." हो सकता है:
- स्ट्रिंग "सेब" एक हाइफ़न के बाद, उदाहरण के लिए
123-apple-456 - स्ट्रिंग "केला" एक हाइफ़न के बाद, उदाहरण के लिए
123-banana-456 - एक रिक्त स्ट्रिंग, उदाहरण के लिए
123-456(ध्यान दें कि केवल एक हाइफ़न है)
"सेब" या "केला" के अलावा कोई भी शब्द अमान्य है।
इन तीन मामलों के लिए, मैं क्रमशः "सेब", "केला" और "" से मेल खाना चाहूंगा। ध्यान दें कि मैं कभी भी हाइफ़न पर कब्जा नहीं करना चाहता , लेकिन मैं हमेशा इसे मैच करना चाहता हूं । यदि स्ट्रिंग 123-...456ऊपर वर्णित रूप में नहीं है, तो उसका कोई मेल नहीं है।
मैं ऐसा करने के लिए एक नियमित अभिव्यक्ति कैसे लिखूं? मान लें कि मेरे पास एक स्वाद है जो लुकहेड, लुकबाइंड, लुकअराउंड और गैर-कैप्चरिंग समूहों की अनुमति देता है।
यहाँ मुख्य अवलोकन यह है कि जब आपके पास "सेब" या "केला" होता है, तो आपके पास अनुगामी हाइफ़न भी होना चाहिए , लेकिन आप इसका मिलान नहीं करना चाहते हैं। और जब आप रिक्त स्ट्रिंग का मिलान कर रहे हों, तो आपके पास अनुगामी हाइफ़न नहीं होना चाहिए । मुझे लगता है कि इस दावे को समझने वाला एक रेग्क्स सही होगा।