2010-04-26 12 views
30

मैं इस बारे में ऑनलाइन कुछ भी नहीं ढूंढ पाया। RegexOptions है, लेकिन इसके ग्लोबल के विकल्पों में से एक के रूप में नहीं है। इनलाइन संशोधक सूची में वैश्विक मिलान का भी उल्लेख नहीं है।क्या .NET Regex वैश्विक मिलान का समर्थन करता है?

--(\\w+)\\s*=\\s*\"(\\w+)\"\\s* 

लेकिन नेट Regex वर्ग नहीं करता:

संक्षेप में, मैं अलग तर्क नाम/मान इस regex का उपयोग कर जोड़े में तरह

--arga= "arg1" --argb ="arg2" 

कुछ पार्स करने के लिए एक regex मिल गया है यह वैश्विक स्तर पर नहीं (इसके परिणामस्वरूप)। इसलिए मुझे इसे काम करने के लिए, मुझे एक मैच करना होगा, फिर इसे तर्क स्ट्रिंग से हटा दें, और लूप को बार-बार हटा दें जब तक कि मैंने सभी तर्कों को समाप्त नहीं किया हो।

यह एक बार रेगेक्स को चलाने के लिए अच्छा होगा, और उसके बाद नाम मूल्य जोड़े प्राप्त करने के लिए मिलान समूहों पर लूप होगा। क्या यह संभव है? मैं क्या खो रहा हूँ?

उत्तर

41

आप Regex.Matches method (plural) की तलाश में हैं, जो मूल स्ट्रिंग में सभी मैचों वाले संग्रह को लौटाता है।

+0

उह ... धन्यवाद! मैं पूरी तरह से याद किया। मैं इसे अब एक शॉट दे दूंगा। – Dave

+0

क्या आप नाम मूल्य जोड़े पर जाने का सबसे साफ तरीका सुझा सकते हैं? जब मैं मिलान का उपयोग करता हूं, तो यह दो समूहों को लौटाता है: '--arga =" arg1 "' और '--argb =" arg2 "', लेकिन मैं इनकी उम्मीद कर रहा था, ** प्लस ** 'arga', 'arg1', 'argb', और' arg2'। – Dave

+3

प्रत्येक 'मिलान' ऑब्जेक्ट की 'समूह [1] 'संपत्ति की जांच करें। – SLaks

संबंधित मुद्दे