Извините, что побил мертвую лошадь, но это как-то странно, что никто не указал на это: «Да, вы можете, но это противоположно тому, как вы используете группы захвата в реальной жизни».
Если вы используете Regex так, как он предназначен для использования, решение будет таким простым:
"6 example input 4".replaceAll("(?:\\d)(.*)(?:\\d)", "number$11");
Или, как справедливо указал ниже Шмосел,
"6 example input 4".replaceAll("\d(.*)\d", "number$11");
... поскольку в вашем регулярном выражении нет веских причин для группировки десятичных знаков.
Обычно вы не используете группы захвата на тех частях строки, которые хотите отбросить , вы используете их для той части строки, которую хотите сохранить .
Если вам действительно нужны группы, которые вы хотите заменить, то, вероятно, вы захотите использовать механизм шаблонов (например, mustache, ejs, StringTemplate, ...).
Помимо любопытных, даже не захватывающие группы в регулярных выражениях существуют как раз на тот случай, если они нужны механизму регулярных выражений для распознавания и пропуска переменного текста. Например, в
(?:abc)*(capture me)(?:bcd)*
они вам нужны, если ваш ввод может выглядеть как «abcabc capture me bcdbcd» или «abc capture me bcd» или даже просто «захватить меня».
Или, говоря наоборот: если текст всегда один и тот же, и вы его не фиксируете, нет причин использовать группы вообще.