मैं इस स्ट्रिंग (बहु लाइन सिंटेक्स नोटिस) है:यह रेगेक्स मिलान गैर-कैप्चरिंग समूह के भीतर भी क्यों है?
var str = ` Number One: Get this
Number Two: And this`;
और मैं एक regex कि (match
के साथ) रिटर्न चाहते हैं:
[str, 'Get this', 'And this']
तो मैं str.match(/Number (?:One|Two): (.*)/g);
की कोशिश की, लेकिन यह लौट रहा है:
["Number One: Get this", "Number Two: And this"]
किसी भी "Number"
शब्द से पहले कोई सफेद स्थान/रेखा-ब्रेक हो सकता है।
कैप्चरिंग समूह के अंदर केवल यही क्यों नहीं लौटाता है? क्या मैं कुछ गलत कर रहा हूँ? और मैं वांछित परिणाम कैसे प्राप्त कर सकता हूं?
ठीक है, धन्यवाद। क्या आप जानते हैं कि यह सभी रेगेक्स इंजनों के साथ समान है? मेरा मतलब है, अगर यह सामान्य रूप से regex कैसे काम करता है के कारण है। – Jacob
मुझे लगता है कि मैं यह कर रहा हूं (बेशक, 'arr' घोषित करना): 'str.split (' \ n ')। प्रत्येक के लिए (x => arr.push (x.match (/ संख्या (?: एक | दो): (। *) /) [1])); ', आपको क्या लगता है? – Jacob
आह, अद्यतन को नहीं देखा, जो भी काम करता है। और @ guest271314 का समाधान भी काम करता है, लेकिन आपने समझाया कि ऐसा क्यों नहीं हुआ, और यह अच्छा है। धन्यवाद। मुझे पूरी स्ट्रिंग में वास्तव में दिलचस्पी नहीं है, मैंने अभी इस सवाल में लिखा है क्योंकि इस तरह मैंने सोचा कि मिलान हमेशा समूहों को पकड़ने के साथ काम करता है। – Jacob