javascript - What's wrong with this regex: /(?:(?:^|\s)hide_([^\s]+))+/? -


यह मेरा regex है:

  / (?: (?: ^ | \ S ) _ ([^ \ S] +)) /  

उदाहरण के लिए, जब मेरे पास यह स्ट्रिंग है:

  hide_test sgadsg hide_ asdg hide_some_more asdgasd < / कोड>  

इसे परीक्षण और कुछ_अधिक से मेल खाना चाहिए। वर्तमान में, यह hide_test और परीक्षण देता है। क्या किसी को पता है कि इस regex में क्या गलत है?

बिना g फ्लैग, केवल पहले मैच लौटाता है।

  'hide_test sgadsg hide_ asdg hide_some_more asdgasd'match (/ (?: (?: ^ | \ S) छिपाने _ ([^ \ s] +)) + /) // = & gt;  

सेटिंग जी फ्लैग आपको सभी मैचों को देगा, (सभी मिलान किए गए स्ट्रिंग्स):

 < Code> 'hide_test sgadsg hide_ asdg hide_some_more asdgasd'match (/ (?: (?: ^ | \ S) छुपाएं _ ([^ \ s] +)) + / g) // = & gt; ["Hide_test", "hide_some_more"]  

छुपाएं _ के बाद केवल भागों प्राप्त करने के लिए, आपको पश्च-प्रक्रिया वापस मूल्य की आवश्यकता होती है।

उदाहरण के लिए, अतिरिक्त प्रतिस्थापन के साथ नक्शा का उपयोग कर:

  'hide_test sgadsg hide_ asdg hide_some_more asdgasd'match (/ (?: (?: ^ | \ S) _ ([^ \ S] +)) + / g) .map (फ़ंक्शन (मैच) {वापसी मैच। स्थान (/ ^ \ s * hide_ /, '');})  
< पी> बीटीडब्लू, नियमित अभिव्यक्ति कम हो सकती है: / (\ bhide_ \ S +) + / g (कैप्चरिंग को नजरअंदाज कर रही है)


Comments