Rebonjour
si tu n'as pas encore trouvé de solution.
La regex pourrait être
(\d{0,2})(?:(\d{3})(\d{3}))+$
Cf un exemple ici https://regex101.com/r/9Imlia/1
Mais comme tu le vois la substitution basique ne fonctionne pas, parce qu'il y a plusieurs $2 et $3.
Ce qu'il faudrait faire, c'est boucler sur les matches et reconstituer ton nombre au fur et à mesure.
Un truc comme ça (codé vite fait à optimiser)
string texte = "98123456789987654321"; Regex maRegex = new Regex(@"(\d{0,2})(\d{3})+$"); string resultat = ""; Int32 i = 0; Match m = maRegex.Matches(texte)[0]; foreach(Group g in m.Groups) { foreach(Capture c in g.Captures) { if(g.Value.Length > 3) continue; Console.WriteLine(c.Value); if(i == 0) { resultat += "(rouge)" + c.Value; i = 1; } else { resultat += "(bleu)" + c.Value; i = 0; } } } Console.WriteLine(resultat);
Merci beaucoup pour cette réponse, en fait, j'ai trouvé, je fais un
Regex(@"(\d{0,3})(\d{0,3})", RegexOptions.RightToLeft).Replace(Entiere, @$"{CouleurAlternative}$1{CouleurBase}$2");
le RightToLeft aide bien ;)
bonne journée
Ha oui, c'est une option que j'utilise peu, je n'y avais pas pensé.
Tant mieux si j'ai pu t'aider un peu.
Pense à marquer le sujet résolu si cela te convient