求助:正则表达式替换含空格间隔的连续多次换行
解决含空白间隔的连续换行合并问题
嘿,这个场景我之前处理过,你的原正则只覆盖了纯连续换行的情况,要处理换行之间夹杂空格(或其他空白字符)的情况,只需要在换行单元前后加上匹配空白的规则就行!
调整后的正则表达式
Regex.Replace(str, @"(?:\s*(?:\r\n|\r(?!\n)|(?!<\r)\n)){2,}\s*", Environment.NewLine)
为什么这么改?
我来拆解下关键调整点:
\s*:匹配任意数量的空白字符(包括空格、制表符、换页符等,如果你只想限定空格,把\s换成单个空格就行)- 保留了你原有的换行单元
(?:\r\n|\r(?!\n)|(?!<\r)\n),确保兼容Windows、Mac、Unix三种主流换行格式 {2,}:要求这种「空白+换行单元」的组合出现2次及以上,也就是至少两个换行(不管中间夹多少空白)- 最后的
\s*:匹配最后一个换行后面可能残留的空白,确保这些多余空白也被一起替换掉
测试场景验证
- 原场景
"\r\n\r\n":依然会被匹配,替换为单个换行 - 你的目标场景
"\r\n \r\n \r\n":会被整个匹配,替换为单个换行 - 混合场景
"\r \n \r\n":同样会被合并成单个换行
如果有其他特殊需求(比如只允许空格不允许制表符),直接把\s替换成 就可以啦!
内容的提问来源于stack exchange,提问作者Gforse
相关产品推荐
相关产品推荐

