Maaf untuk mengalahkan kuda mati, tapi agak aneh bahwa tidak ada yang menunjukkan ini - "Ya Anda bisa, tapi ini kebalikan dari bagaimana Anda menggunakan grup penangkap dalam kehidupan nyata".
Jika Anda menggunakan Regex seperti seharusnya, solusinya sesederhana ini:
"6 example input 4".replaceAll("(?:\\d)(.*)(?:\\d)", "number$11");
Atau seperti yang ditunjukkan oleh symosel di bawah ini,
"6 example input 4".replaceAll("\d(.*)\d", "number$11");
... karena di regex Anda tidak ada alasan yang baik untuk mengelompokkan desimal sama sekali.
Anda biasanya tidak menggunakan grup penangkap pada bagian string yang ingin Anda buang , Anda menggunakannya pada bagian string yang ingin Anda pertahankan .
Jika Anda benar-benar menginginkan grup yang ingin Anda ganti, yang mungkin Anda inginkan adalah mesin templat (mis. Kumis, ejs, StringTemplate, ...).
Sebagai tambahan bagi yang penasaran, bahkan grup non-capturing dalam regex hanya ada untuk kasus di mana mesin regex membutuhkan mereka untuk mengenali dan melewati teks variabel. Misalnya, dalam
(?:abc)*(capture me)(?:bcd)*
Anda memerlukannya jika masukan Anda dapat berupa " abcabc capture me bcdbcd" atau "abc capture me bcd" atau bahkan "capture me".
Atau dengan kata lain: jika teksnya selalu sama, dan Anda tidak menangkapnya, tidak ada alasan untuk menggunakan grup sama sekali.