Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/294.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/20.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#_Regex - Fatal编程技术网

C# 删除两个字符之间的字符

C# 删除两个字符之间的字符,c#,regex,C#,Regex,我在尝试删除两个字符之间的文本时遇到问题。 我想删除=和,之间的所有文本。下面是我试图将其应用到的示例代码 "Y = Yellow, W = White, B = Blue, R = Black Out" 我想做的是把上面的更改改成这个 "Y W B R" 或者是这个,但最好是上面的 "Y W B R = Black Out" 这就是我正在尝试的 string input = "Y = Yellow, W = White, B = Blue

我在尝试删除两个字符之间的文本时遇到问题。 我想删除
=
之间的所有文本。下面是我试图将其应用到的示例代码

    "Y = Yellow,  W = White,  B = Blue,  R = Black Out"
我想做的是把上面的更改改成这个

    "Y W B R"
或者是这个,但最好是上面的

    "Y W B R = Black Out"
这就是我正在尝试的

        string input = "Y = Yellow,  W = White,  B = Blue,  R = Black Out";
        string regex = "(\\=.*\\,)";
        string output = Regex.Replace(input, regex, "");
下面是展示的内容

    "Y R = Black Out"

我知道我做错了什么。这是我第一次使用正则表达式

问题在于,
*
对正则表达式非常贪婪。因此,从第一个
到最后一个
=
的所有内容都被抓取。使用
*?
使用非贪婪匹配:

string regex = "=.*?,";
要删除最后一个值,可以执行以下操作:

string regex = "=.*?(,|$)";

问题是,
*
对正则表达式非常贪婪。因此,从第一个
到最后一个
=
的所有内容都被抓取。使用
*?
使用非贪婪匹配:

string regex = "=.*?,";
要删除最后一个值,可以执行以下操作:

string regex = "=.*?(,|$)";

无需使用正则表达式:

string result = string.Join(" ", input.Split(',')
                                 .Select(p => p.Split('=')[0].Trim()));

无需使用正则表达式:

string result = string.Join(" ", input.Split(',')
                                 .Select(p => p.Split('=')[0].Trim()));

这就是结果。“Y W B R=Black Out”是否有任何方法获得此结果“Y W B R”?是的,您可以执行
string regex=“(\\=.*?\(,|$)”
以匹配逗号或字符串结尾。此外,转义符和括号的数量也超过了所需数量。看我的更新。太好了,太好了。谢谢。在我允许的情况下,我会接受答案。这就是结果。“Y W B R=Black Out”是否有任何方法获得此结果“Y W B R”?是的,您可以执行
string regex=“(\\=.*?\(,|$)”
以匹配逗号或字符串结尾。此外,转义符和括号的数量也超过了所需数量。看我的更新。太好了,太好了。谢谢。我会在允许的情况下接受答案。这也行。不过,哪一个更好用呢?也很抱歉,但我必须将雅各布的回答标记为解决此问题的答案。他先回答,这也行。不过,哪一个更好用呢?也很抱歉,但我必须将雅各布的回答标记为解决此问题的答案。他先回答。