2016-12-02 18 views
8

C#では複数のグループを置き換える正規表現を指定する方法を教えてください。たとえば、\r\nまたは\r\rの複数のインスタンスを環境改行に置き換えたいとします。私は論理的にこの正規表現を書いたが、間違っていることは分かっている。それがどのように機能するかを訂正し説明してください。Regexは複数の改行を置き換えます

System.Text.RegularExpressions.Regex.Replace(task.Message, @"(\r\n){2,}(\r\r){2,}", System.Environment.NewLine); 

入力テキストの各ラインのいずれか\r\n又は\r\rによって分離することができる

Stackoverflow 

StackExchange 

User Experience 

。正規表現の後に期待される成果置き換えが

Stackoverflow  
StackExchange  
User Experience 

答えて

10

を下回っている点は、あなたの正規表現はシーケンス\r\n(2以上)、その後、2以上シーケンス\r\rと一致していることです。あなただけ\rまたは\nの2回の以上の繰り返しに一致させる必要がある場合は、

[\r\n]+ 

または[\r\n]{2,}を必要としています。

あなたはまさに完璧

(?:\r?\n|\r){2,} 
+1

作業者を使用し、2つの以上の共通の改行の種類(Windowsの\r\n、UNIX/Linuxでの\nおよびMac OS上\r)と一致する必要がある場合。正規表現を推測することは常に学習リストにあるはずです – Deeptechtons

関連する問題