正则表达式替换换行符,如果它们出现超过一次,包括中间有空格的组合

Posted

技术标签:

【中文标题】正则表达式替换换行符,如果它们出现超过一次,包括中间有空格的组合【英文标题】:Regex replace line feeds if they occur more than one time including combination with space in between 【发布时间】:2020-09-05 18:22:32 【问题描述】:

所以我有一个字符串,我想用一个换行符替换序列中出现两次以上的所有换行符。为此我使用:

Regex.Replace(str, "(?:\r\n|\r(?!\n)|(?!<\r)\n)2,", Environment.NewLine)

只要序列是\r\n\r\n,这就会起作用,但我有一个案例是在哪里看到这个\r\n \r\n \r\n 那么如何使用正则表达式替换这些值?

【问题讨论】:

我不知道 C# 是否支持它,但可以尝试一下:(?:\R\h*)2, 其中\R 代表任何类型的换行符,\h 代表任何水平空格。 【参考方案1】:
Regex.Replace(text, @"(?:(?:[ \t\r\n])+(?![\r\n]))+", Environment.NewLine);

除空格外还包括制表符。

【讨论】:

这与\n \n \n不匹配 固定处理这种情况 谢谢,差不多了,因为这也替换了单词之间的空格。例如:“您好,这是第一行\r\n \r\n这是第二行”必须是“您好,这是第一行\r\n这是第二行”

以上是关于正则表达式替换换行符,如果它们出现超过一次,包括中间有空格的组合的主要内容,如果未能解决你的问题,请参考以下文章

正则表达式:检查是不是有超过 x 个换行符

UltraEdit中使用正则表达式-简单用法

notepad++正则表达式替换换行符

Java正则表达式

正则表达式

如何替换 Python 中第一次出现的正则表达式?