2010-09-14 16 views
10

मेरे पास एक रेगेक्स है जो इसक्या करता है?: रेगेक्स में करें

/^(?:\w+\s)*(\w+)$*/ 

जैसा दिखता है ?: क्या है?

+1

लोगों को भ्रमित करने के लिए यह है। – JAL

+1

[गैर कैप्चरिंग समूह का संभावित डुप्लिकेट? (?:)] (http://stackoverflow.com/questions/3512471/non-capturing-group) – HamZa

उत्तर

17

यह इंगित करता है कि उप-पैटर्न एक गैर-कैप्चर उप-पैटर्न है। इसका मतलब है कि (?:\w+\s) में जो कुछ भी मेल खाता है, भले ही यह () से घिरा हुआ हो, यह मैचों की सूची में दिखाई नहीं देगा, केवल (\w+) होगा।

आप अभी भी एक विशिष्ट पैटर्न की तलाश में हैं (इस मामले में, कम से कम एक शब्द के बाद एक सिंगल व्हाइटस्पेस चरित्र), लेकिन आपको परवाह नहीं है कि वास्तव में क्या मेल खाता है।

+1

+1 अधिक जानकारी: http://www.regular-expressions.info/brackets.html –

2

इसका मतलब है केवल समूह लेकिन समूहबद्ध भाग को याद नहीं है।

डिफ़ॉल्ट रूप से () रेगेक्स इंजन को उस स्ट्रिंग के हिस्से को याद रखने के लिए कहता है जो इसके बीच पैटर्न से मेल खाता है। लेकिन कई बार हम सिर्फ समूह के लिए एक पैटर्न regex स्मृति ट्रिगर, कि हम (

3
प्रदान की उत्कृष्ट उत्तर देने के लिए इसके अलावा

के स्थान पर (?: का उपयोग करने के लिए बिना चाहते हैं, इसकी उपयोगिता से समूहों को निकालने के लिए आवश्यक कोड सरल करने के लिए भी है मिलान किए गए परिणाम। उदाहरण के लिए, आपके (\ w +) समूह को समूह 1 के रूप में जाना जाता है, इसके बिना किसी भी समूह के बारे में चिंतित होने के बिना। यह आपके कोड की रखरखाव में सुधार कर सकता है।

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