2013-03-28 84 views
2

我想用C#中的一個\r\n\r\n替換\r\n中的任意數字。對不起,如果這是一個愚蠢的問題,但我是新來的正則表達式。
其實我試過僅用一個換行符替換多個換行符

clearstring = Regex.Replace(clearstring, @"\r\n+", "\r\n\r\n", RegexOptions.Singleline | RegexOptions.Compiled | RegexOptions.ExplicitCapture | RegexOptions.IgnoreCase); 

,但它沒有工作,有什麼建議?我會很感激。

回答

4

嘗試

clearstring = Regex.Replace(clearstring, @"(\r\n)+", "\r\n\r\n", RegexOptions.Singleline | RegexOptions.Compiled | RegexOptions.ExplicitCapture | RegexOptions.IgnoreCase); 

的規則是量詞(在你的情況下,加號)僅在緊接組或字符類,而你的情況是隻有\ n適用。如果你想包含多個字符或類,你應該將它們分組。

+0

邏輯回答謝謝你的男人 – MohamedSayed 2013-03-28 07:17:41

+1

很高興看到我能提供幫助。如果答案適用於您,請始終使用左側的綠色複選框。 – dotNET 2013-03-28 07:20:19

+1

這是評論是不是關於corrent問題。但是如果我提供'/ r/r/n/r/n/n/r/n',你的代碼會給我兩個新的輸出行。所以,當它是一個安全問題時,我會使用'while'循環清除字符串,直到之後沒有兩個新行。但是,在這種情況下,不必執行 – 2013-03-28 07:45:35

2
Regex.Replace(str, @"(\r\n){2,}", Environment.NewLine) 

這將取代只有當兩個或多個連續的空行被發現