Désolé de battre un cheval mort, mais c'est un peu bizarre que personne ne l'ait signalé - "Oui, vous pouvez, mais c'est le contraire de la façon dont vous utilisez la capture de groupes dans la vraie vie".
Si vous utilisez Regex comme il est censé être utilisé, la solution est aussi simple que ceci:
"6 example input 4".replaceAll("(?:\\d)(.*)(?:\\d)", "number$11");
Ou comme indiqué à juste titre par shmosel ci-dessous,
"6 example input 4".replaceAll("\d(.*)\d", "number$11");
... car dans votre regex il n'y a aucune bonne raison de regrouper les décimales du tout.
Vous n'utilisez généralement pas de groupes de capture sur les parties de la chaîne que vous souhaitez supprimer , vous les utilisez sur la partie de la chaîne que vous souhaitez conserver .
Si vous voulez vraiment des groupes que vous souhaitez remplacer, ce que vous voulez probablement à la place est un moteur de création de modèles (par exemple, moustache, ejs, StringTemplate, ...).
En aparté pour les curieux, même les groupes non capturants dans les regex sont juste là pour le cas où le moteur de regex en a besoin pour reconnaître et ignorer le texte variable. Par exemple, dans
(?:abc)*(capture me)(?:bcd)*
vous en avez besoin si votre entrée peut ressembler à "abcabc capture me bcdbcd" ou "abc capture me bcd" ou même simplement "capture me".
Ou pour le dire autrement: si le texte est toujours le même et que vous ne le capturez pas, il n'y a aucune raison d'utiliser des groupes.