我在尝试删除两个字符之间的文本时遇到问题。
我想删除=
和,
之间的所有文字。这是我试图将其应用于的示例代码。
"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。
答案 0 :(得分:4)
问题是*
对正则表达式贪婪。因此,抓住了从第一个,
到最后一个=
的所有内容。使用*?
使用非贪婪的匹配:
string regex = "=.*?,";
要摆脱最后一个值,你可以这样做:
string regex = "=.*?(,|$)";
答案 1 :(得分:4)
无需使用正则表达式:
string result = string.Join(" ", input.Split(',')
.Select(p => p.Split('=')[0].Trim()));