如何编写正则匹配单个换行符而非双换行符并替换为空格
解决办法
要只把单个换行换成空格、同时保留双换行的话,试试用正向+反向预查结合的正则,精准匹配那些“孤立”的换行符。
实用正则方案
不同工具里(比如Python、VS Code、记事本++)都能用这两种写法:
写法1:精准匹配单个换行
直接找前后都不是换行的单个换行:
(?<!\n)\n(?!\n)
(?<!\n):确保当前换行前面没别的换行(?!\n):确保当前换行后面也没别的换行
把匹配到的内容替换成空格就行。
写法2:兼容多连续换行的情况
如果文本里有三个及以上的连续换行,想统一保留成双换行的话,可以分两步来:
- 先把所有连续的多换行换成双换行:
\n{2,}
替换成\n\n
2. 再用第一种写法替换剩下的单个换行
举个例子
原始文本:
第一行 第二行 第三行 第四行
用第一种正则替换后,结果就变成:
第一行 第二行 第三行 第四行
为啥你之前的正则没用?
你之前写的(?!\n\n)\n{1}这类逻辑不对,(?!\n\n)只是检查当前位置后面不是双换行,但双换行里的第一个换行,后面是单个换行,依然会被这个正则匹配到,自然就破坏了双换行。
内容的提问来源于stack exchange,提问作者Crabgrass0899
相关产品推荐
相关产品推荐

