2014-06-23 167 views
0

更換多減一個減有一個字符串通過正則表達式

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-"; 
+2

我很難相信你會在你的輸出中加上一個字母'b' – Sayse

+0

複製粘貼錯誤。謝謝。固定! :) – podeig

回答

6

*比賽0以上先前模式的匹配。使用{2,}匹配2 or more匹配。

-不需要轉義。

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

我的第一個想法是,它會更簡潔,只是說「一個或多個」,但後來我意識到,可能會使正則表達式變成'「 - +」'......並且在這之前不需要'@'字符串。 – Chris

0

您的代碼將是

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

OR

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

*使得正則表達式的貪婪,它代表零次或多次。所以它把-置零。使用{1,}相匹配的字符-

1

的問題是,*比賽或多個字符,這意味着它的字母之間的匹配一次或多次出現。

將其更改爲+這意味着一個或更多。