Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/282.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 我能一步写出这个正则表达式吗?_C#_.net_Regex_Replace - Fatal编程技术网

C# 我能一步写出这个正则表达式吗?

C# 我能一步写出这个正则表达式吗?,c#,.net,regex,replace,C#,.net,Regex,Replace,这是输入字符串“23x+y-34X+y+21x-3y2-3x-y+2”。我想用空格包围每个“+”和“-”字符,但前提是它们没有从左侧或右侧完全准备好。所以我的输入字符串看起来像“23x+y-34x+y+21x-3y2-3x-y+2”。我编写了以下代码来完成这项工作: Regex reg1 = new Regex(@"\+(?! )|\-(?! )"); input = reg1.Replace(input, delegate(Match m) { return m.Value +

这是输入字符串“23x+y-34X+y+21x-3y2-3x-y+2”。我想用空格包围每个“+”和“-”字符,但前提是它们没有从左侧或右侧完全准备好。所以我的输入字符串看起来像“23x+y-34x+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; });
Regex reg1=新的正则表达式(@“\+(?!)\-(?!)”;
input=reg1.Replace(输入,委托(匹配m){返回m.Value+“”;});

Regex reg2=new Regex(@“(?我看不出这里需要lookarounds或委托。只需替换

\s*([-+])\s*

(见。)

我会试试看

Regex.Replace(input, @"\s*[+-]\s*", m => " " + m.ToString().Trim() + " ");

thx,我是正则表达式的新手,不知道simpleLambda表达式可能很有趣,但这可以单独用正则表达式来实现,正如@KennyTM所演示的那样。
Regex.Replace(input, @"\s*[+-]\s*", m => " " + m.ToString().Trim() + " ");