Disons que j'ai une très longue chaîne, qui ne sont essentiellement que des noms de champs, séparés par des virgules.
Mon problème, lorsque j'essaie de le diviser en champs séparés, est que certains noms contiennent une virgule, comme "{0,0}" ou "{45,-45}" ou "{90,90}".
Afin de séparer cette longue chaîne en champs, je dois remplacer cette virgule par quelque chose.
Ceci est un petit morceau de cette chaîne : "Normal_0_{0,0}, Normal_90_{45,-45}" - je dois donc remplacer uniquement cette virgule qui se trouve à l'intérieur des accolades.
Alors j'ai écrit ceci :
matches = Regex (longLine, "(\{\d{1,2})(,)(-?\d{1,2}\})", "\1|\3");Il est censé remplacer toutes les virgules à l'intérieur de la chaîne. Mais en réalité, cela ne remplace que la première virgule de la chaîne.
Pourquoi? Et comment puis-je remplacer TOUS les matchs ?
Question secondaire : dans ce code
Word(1, "Normal_0_{0,0}, Normal_90_{45,-45}" , ", ")il diviserait la chaîne par SOIT "," OU " ". Comment puis-je diviser par COMBINAISON de caractères, en particulier par ", " - virgule suivie d'un espace ?
Pour votre question secondaire : vous ne pouvez pas facilement diviser avec de nombreux caractères en utilisant Word(s). Vous pourrez peut-être utiliser Regex Match OU vous pouvez d'abord remplacer tous les ", " (substitut, Regex) par un caractère spécial, puis les diviser en utilisant Word(s).
Comme d'habitude, quelques minutes après avoir posté, je suis tombé sur la réponse dans la documentation.
Tout ce dont j'avais besoin était GLOBALREPLACE :
matches = Regex (longLine, "(\{\d{1,2})(,)(-?\d{1,2}\})", "\1|\3", GLOBALREPLACE);