用正则表达式将多减去一减

时间:2014-06-23 12:20:48

标签: c# regex replace

有一个字符串

str = "test--removing-----minus-";

尝试替换为

str = Regex.Replace(str, @"\-*", @"-");

但我得到

"t-e-s-t--r-e-m-o-v-i-n-g--m-i-n-u-s-";

3 个答案:

答案 0 :(得分:6)

*匹配先前模式的 0或更多匹配。使用{2,}匹配2 or more匹配。

并且-不需要转义。

str = Regex.Replace(str, @"-{2,}", @"-");

答案 1 :(得分:1)

问题是*匹配或更多字符,这意味着它在字母之间匹配。

将其更改为+,这意味着一个或更多。

答案 2 :(得分:0)

您的代码将是,

str = Regex.Replace(str, @"\-+", @"-");

OR

str = Regex.Replace(str, @"\-{1,}", @"-");

*使正则表达式变得贪婪,它代表零次或多次。因此它将-置于零次出现。使用{1,}匹配字符-

的一个或多个匹配项