You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让Perl正则表达式匹配连续换行符?

解决Perl匹配连续换行符的问题

问题出在-pe参数是逐行处理输入的:输入会被拆分为单独的行(比如aaa、空行、空行、bbb),每行内容里最多只有一个换行符,自然找不到连续的\n\n匹配项。要匹配连续换行符,得让Perl一次性读取整个输入文本,而非逐行处理。

修复后的命令

使用-0777参数让Perl将全部输入作为单个字符串读取,再执行替换:

echo "aaa\n\n\nbbb" | perl -0777 -pe "s/\n\n/z/g"

执行后输出:

aaaz
bbb

如果希望把任意多个连续换行符都替换成单个z,可以用更通用的正则:

echo "aaa\n\n\nbbb" | perl -0777 -pe "s/\n{2,}/z/g"

输出结果:

aaazbbb

补充说明

原命令里的m修饰符(多行模式)只影响^和$的匹配范围,对连续换行符的匹配没有帮助——核心问题还是逐行处理导致连续换行符被拆分到不同的行里,无法在同一个处理单元中被匹配到。

内容的提问来源于stack exchange,提问作者clay

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 17:40:38