मैं आम तौर पर एक रेगेक्स को पार्स करने के लिए कई स्थितियों और/या लूपों के साथ समाप्त होता हूं और अपने कैप्चर समूहों में वापस मूल्यों को इंटरपोलेट करता हूं, और आशा करता हूं कि इस समस्या को एक सरल तरीके से हल करने के लिए अनुभवी उत्तरों की तलाश है।एक रेगेक्स पैटर्न में मानों को इंटरपोल करके स्ट्रिंग बनाने का सबसे आसान तरीका?
उदाहरण के लिए, X(?<xid>\d+)-(?<xsub>\w+)\.xml
की तरह एक regex पैटर्न नामित कैप्चर समूहों "XID" और "xsub", जैसे फ़ाइल नाम से मेल करने का इरादा होने दिया: X1-foo.xml, X555-bar.xml, आदि, जब तर्क के साथ प्रदान की: int xid=999, string xsub="baz"
, मैं उचित फ़ाइल नाम के निर्माण के लिए पैटर्न समूहों में उन मूल्यों को जोड़ हैं: x 999-baz.xml
इसे सरल रखने के लिए, स्पष्ट कैप्चर नहीं लगाए गए हैं।
String.Format बिना :
इस अवधारणा को आसानी से नेट स्ट्रिंग प्रारूप वस्तुओं के साथ पूरा किया है की तरह String.Format("X{0}-{1}.xml", xid, xsub)
लेकिन मैं पहले से ही किसी भी फ़ाइल नाम स्ट्रिंग से उन मूल्यों को पार्स आउट कर एक Regex पैटर्न है, और चाहते हैं सटीकता के लिए, इसके साथ एक फ़ाइल नाम पुनर्निर्माण करके विपरीत दिशा में जाने के लिए एक ही पैटर्न का उपयोग करने के लिए। यदि मुझे स्ट्रिंग से मानों को पार्स करने के लिए रेगेक्स पैटर्न की आवश्यकता है, लेकिन फ़ाइल नाम को पुनर्निर्मित करने के लिए प्रारूप आइटमों के साथ एक स्ट्रिंग, इसे दो प्रकार के विशिष्ट वाक्यविन्यासों का उपयोग करने की आवश्यकता होती है, जिससे उन्हें लिखते समय मैन्युअल त्रुटि का अधिक मौका मिलता है - यह बहुत आसान है गलती से एक खराब प्रारूप आइटम स्ट्रिंग बनाएं जो कि रेगेक्स पैटर्न मिलान के परिणाम को ठीक से पुनर्निर्माण नहीं करता है, या इसके विपरीत।
इस स्थिति में, रेगेक्स वास्तव में 'इनपुट' है। – BoltClock