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

Perl单行命令正则移除指定行区间内容失效,求解决方案

解决Perl单行命令跨多行正则匹配失效的问题

你的问题核心在于Perl默认的文本处理模式:

  • 默认-p选项是逐行读取并处理文本,你的正则需要跨多行匹配,自然找不到符合条件的内容
  • regex101默认将整个文本作为单个字符串处理,所以能正常匹配

修正后的命令如下:

perl -0777 -pe 's/(^\d\. .*)\n(.*\n)*?(Province|Limbourg)/$1\n$3/gm'

关键参数说明:

  • -0777:让Perl一次性读取整个文件,而非逐行拆分,确保跨多行的内容能被正则捕获
  • gm修饰符:
    • g:全局匹配所有符合规则的片段
    • m:启用多行模式,让^和$匹配每行的开头/结尾(而非整个文本的首尾)

替换逻辑里的$1和$3对应正则的捕获组,分别保留开头的数字行和结尾的Province/Limbourg行,中间内容被自动移除。

内容的提问来源于stack exchange,提问作者Gilles San Martin

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 04:01:45