删除两个字符之间的字符

时间:2013-11-15 16:43:16

标签: 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,  R = Black Out";
        string regex = "(\\=.*\\,)";
        string output = Regex.Replace(input, regex, "");

以下是显示的内容

    "Y R = Black Out"

我知道我做错了什么。这是我第一次使用Regex。

2 个答案:

答案 0 :(得分:4)

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

string regex = "=.*?,";

要摆脱最后一个值,你可以这样做:

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

答案 1 :(得分:4)

无需使用正则表达式:

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