Вибачте, що побили мертвого коня, але дивно, що ніхто не вказував на це - "Так, ви можете, але це навпаки, як ви користуєтесь захопленнями груп у реальному житті".
Якщо ви використовуєте Regex так, як це передбачається, рішення настільки ж просто, як це:
"6 example input 4".replaceAll("(?:\\d)(.*)(?:\\d)", "number$11");
Або як справедливо зазначив шмосел нижче,
"6 example input 4".replaceAll("\d(.*)\d", "number$11");
... оскільки у вашому регулярному виразі немає жодних вагомих причин групувати десяткові знаки.
Зазвичай ви не використовуєте групи захоплення на частинах рядка, які ви хочете відкинути , ви використовуєте їх на частині рядка, яку ви хочете зберегти .
Якщо ви дійсно хочете груп, які ви хочете замінити, ви, напевно, хочете замість цього шаблону (наприклад, вуса, ejs, StringTemplate, ...).
Окрім цікавих, навіть групи, що не фіксують регулярні вирази, якраз існують для того випадку, щоб механізм регулярних виразів потребував їх для розпізнавання та пропуску тексту змінної. Наприклад, в
(?:abc)*(capture me)(?:bcd)*
вони вам потрібні, якщо ваш внесок може виглядати як "abcabc захоплюйте мене bcdbcd" або "abc захоплюйте мене bcd" або навіть просто " захоплюйте мене".
Або кажучи навпаки: якщо текст завжди однаковий, і ви не захоплюєте його, то немає жодної причини використовувати групи.