这是输入字符串“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 //匹配'+'后跟任何不是''(空格)的字符或' - '
相同的字符reg2 //同样的事情我只匹配'+'或' - '不在前面''(空白)
委托1和2只在m.Value(匹配值)之前和之后插入“”
问题是,有没有办法只创建一个正则表达式和一个代表?即一步完成这项工作?我是正则表达式的新手,我想学习有效的方法。
答案 0 :(得分:6)
答案 1 :(得分:3)
我试试
Regex.Replace(input, @"\s*[+-]\s*", m => " " + m.ToString().Trim() + " ");