有一个字符串
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-";
答案 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,}
匹配字符-