Это входная строка «23x + y-34 x + y + 21x - 3y2-3x-y + 2». Я хочу окружить все символы «+» и «-» пробелами, но только если они не имеют слишком много окружения с левой или с правой стороны. Таким образом, моя строка ввода будет выглядеть так: «23x + y - 34 x + y + 21x - 3y2 - 3x - y + 2». Я написал этот код, который делает работу:Могу ли я написать это регулярное выражение за один шаг?
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; });
объяснение: REG1 // Match '+', а затем любой символ, не '' (пробельных) или то же самое для '-'
Reg2 // То же самое только что я матч «+» или «-» не предшествующее от ' «(пробел)
делегатом 1 и 2 просто вставить„“до и после m.Value (значение матча)
Вопрос, есть ли способ создать только одно регулярное выражение и только один делегат? т. е. выполнять эту работу за один шаг? Я новичок в регулярном выражении, и я хочу учиться эффективно.
Хороший сайт, ideone.com! –
thx, я новичок в регулярном выражении, не знал, что это может быть так просто – dontoo