का उपयोग कर आंतरिक पैटर्न को दोबारा प्राप्त करें मुझे पता है कि .NET में regex रिकर्सन के बारे में कई प्रश्न हैं। मैं कुछ जटिल रेगेक्स एक्सप्रेशन लिख सकता हूं लेकिन यह रिकर्सन मेरे बाहर है, मैं इसे लिखने में सक्षम नहीं हूं।regex C#
यह मेरे प्रश्नों के निकटतम प्रश्न हैं।
first question,second question।
लेकिन यह पूरी स्ट्रिंग से मेल खाता है, मैं चाहता हूं कि संग्रह में मैच पहले से ही सबसे पहले मैच या कुछ क्रम में। इसके अलावा यह एक उद्घाटन चरित्र और एक बंद चरित्र पर मेल खाता है। खुलने और बंद करने के लिए मेरा 2 अक्षर है, [! और!]
मेरी इनपुट स्ट्रिंग इस तरह कुछ होगी।
[!a='test' b='[!a='innertest' b='innervalue'!]'!]
मैं innertest अनुभाग, [!a='innertest' b='innervalue'!],
पहले खोजने की जरूरत है और फिर मेरी अभिव्यक्ति के पेड़ में से एक के माध्यम से मूल्यांकन करते हैं। फिर इसमें शामिल माता-पिता का मूल्यांकन करें।
क्या कोई इससे मदद कर सकता है?
^\[!((?<n>\w+='\[!)|(?<inner-n>!]')|\w+='(?!\[!)[^']*'|)*!](?!(n))$
यह क्रम में प्रत्येक आइटम के लिए अंतरतम आइटम दे देंगे:
यह अच्छा लग रहा है..आपकी मदद के लिए धन्यवाद। मैं इसे आजमाने की कोशिश कर रहा हूं। ऑर्डर देने का कोई तरीका है, जैसा कि पहले सबसे पहले है, क्योंकि मुझे पहले इसका मूल्यांकन करना होगा। –
सीधे नहीं। आप प्रत्येक कैप्चर के लिए 'कैप्चर.स्टार्ट' और 'कैप्चर.लेथेंथ' गुणों का उपयोग कर इसे काम कर सकते हैं, क्योंकि इससे आपको पता चल जाएगा कि कौन से कैप्चर में अन्य कैप्चर होते हैं। हालांकि, यदि प्रत्येक 'x =' ... '' केवल उस पर निर्भर करता है जो इसमें शामिल है, तो इस आदेश को ठीक काम करना चाहिए। – porges
यह मेरे इच्छित होने के बहुत करीब है। आपके प्रयास के लिए धन्यवाद। आप एक प्रतिभा होना चाहिए !!! इस पर एक अंतिम सवाल। अगर मैं [!,!] के बजाय उद्घाटन और समापन टैग को [} और {] में बदलना चाहता हूं, तो \ w + = '(?! \ [!) [^'] * '| खंड परिवर्तन मैंने कुछ चीजों की कोशिश की लेकिन इसे कैप्चर नहीं कर रहा था। –