我可以一步编写这个正则表达式吗?

don*_*too 0 .net c# regex replace

这是输入字符串"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; });
Run Code Online (Sandbox Code Playgroud)

解释:reg1 //匹配'+'后跟任何不是''(空格)的字符或' - '相同的字符

reg2 //同样的事情,我匹配'+'或' - '不在前面''(空白)

委托1和2只在m.Value之前和之后插入""(匹配值)

问题是,有没有办法只创建一个正则表达式和一个代表?即一步完成这项工作?我是正则表达式的新手,我想学习有效的方法.

ken*_*ytm 6

我不认为这里需要外观或代表.只需更换

\s*([-+])\s*
Run Code Online (Sandbox Code Playgroud)

" $1 "
Run Code Online (Sandbox Code Playgroud)

(见http://ideone.com/r3Oog.)