Ceci est la chaîne d'entrée "23x + y-34 x + y + 21x - 3y2-3x-y + 2". Je veux entourer chaque caractère '+' et '-' d'espaces blancs, mais seulement s'ils ne sont pas déjà entourés du côté gauche ou du côté droit. Donc, ma chaîne d'entrée ressemblerait à ceci "23x + y - 34 x + y + 21x - 3y2 - 3x - y + 2". J'ai écrit ce code qui fait le travail:Puis-je écrire cette regex en une étape?
Regex reg1 = new Regex(@"\+(?!)|\-(?!)");
input = reg1.Replace(input, delegate(Match m) { return m.Value + " "; });
Regex reg2 = new Regex(@"(?<!)\+|(?<!)\-");
input = reg2.Replace(input, delegate(Match m) { return " " + m.Value; });
explication: REG1 // Match '+' suivi d'un caractère non '' (espace) ou même chose pour '-'
REG2 // même chose seulement que je match '+' ou '-' ne précédant pas ' « (espace)
délégué 1 et 2 insérer juste "" avant et après m.Value (valeur de correspondance)
la question est, est-il un moyen de créer une seule regex et un seul délégué? c'est-à-dire faire ce travail en une étape? Je suis un nouveau à regex et je veux apprendre de manière efficace.
Nice site, ideone.com! –
thx, je suis un nouveau à regex, je ne savais pas que cela peut être aussi simple – dontoo