正则表达式替换多个换行符

9
在C#中,如何指定正则表达式以替换多个组?例如,我想要用环境换行符替换多个\r\n\r\r实例。我原本逻辑上写了这个正则表达式,但我知道它是错误的。请纠正并解释它的工作原理。
System.Text.RegularExpressions.Regex.Replace(task.Message, @"(\r\n){2,}(\r\r){2,}", System.Environment.NewLine);

输入文本

Stackoverflow

StackExchange

User Experience

每行可以通过 \r\n 或者 \r\r 进行分隔。正则表达式替换后的预期结果如下所示。

Stackoverflow    
StackExchange    
User Experience
1个回答

11

重点是,你的正则表达式匹配连续出现2个或更多的\r\n,然后再匹配2个或更多连续出现\r\r。你需要

[\r\n]+

如果你需要精确匹配2个或更多常见的换行符类型(Windows中的\r\n,Unix / Linux中的\n和Mac OS上的\r),请使用[\r\n]{2,}

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

1
工作得非常完美。我想正则表达式应该永远在我的学习清单上。 - Deeptechtons

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接