एक मरे हुए घोड़े को पीटने के लिए क्षमा करें, लेकिन यह अजीब तरह का है कि किसी ने भी यह नहीं कहा - "हां आप कर सकते हैं, लेकिन यह विपरीत है कि आप वास्तविक जीवन में समूहों को कैसे उपयोग करते हैं"।
यदि आप रेगेक्स का उपयोग करने के तरीके से करते हैं, तो समाधान इस प्रकार सरल है:
"6 example input 4".replaceAll("(?:\\d)(.*)(?:\\d)", "number$11");
या जैसा कि नीचे shmosel द्वारा बताया गया है,
"6 example input 4".replaceAll("\d(.*)\d", "number$11");
... चूंकि आपके रेगेक्स में दशमलव को समूहीकृत करने का कोई अच्छा कारण नहीं है।
आप आम तौर पर स्ट्रिंग के उन हिस्सों पर कब्जा करने वाले समूहों का उपयोग नहीं करते हैं जिन्हें आप छोड़ना चाहते हैं , आप उन्हें उस स्ट्रिंग के हिस्से पर उपयोग करते हैं जिसे आप रखना चाहते हैं ।
यदि आप वास्तव में उन समूहों को चाहते हैं जिन्हें आप बदलना चाहते हैं, तो आप शायद इसके बजाय एक अस्थायी इंजन चाहते हैं (जैसे मूंछें, ईजेएस, स्ट्रिंगमप्लेट, ...)।
उत्सुक के लिए एक तरफ के रूप में, रेगेक्स में गैर-कैप्चरिंग समूह भी केवल इस मामले के लिए हैं कि रेगेक्स इंजन को चर पाठ को पहचानने और छोड़ने के लिए उनकी आवश्यकता होती है। उदाहरण के लिए, में
(?:abc)*(capture me)(?:bcd)*
आपको उनकी ज़रूरत है अगर आपका इनपुट "abcabc कैप्चर मी bcdbcd" या "abc कैप्चर मी एलसीडी " या यहाँ तक कि " मुझ पर कब्जा " की तरह दिख सकता है ।
या इसे दूसरे तरीके से रखने के लिए: यदि पाठ हमेशा समान होता है, और आप इसे कैप्चर नहीं करते हैं, तो समूहों का उपयोग करने का कोई कारण नहीं है।