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

如何用正则删除以WSPRD2#开头块中含DELESTAT的整行

解决方案:仅删除指定代码块中的目标行

需求

仅删除以WSPRD2#开头、以END结尾的代码块中包含DELESTAT的整行代码,其余代码块中的对应行保留。

测试示例代码

WSPRD3#/TO/PATH/TASK5
 PRIORITY 60
NEEDS 1 MASTER#AAA0RTYU
NEEDS 1 MASTER#DELESTAT
NEEDS 1 MASTER#RAAA1JK

 FOLLOWS GET_INPUT

END

WSPRD2#/TO/PATH/TASK6
 PRIORITY 60
NEEDS 1 MASTER#AAA0RETU
NEEDS 1 MASTER#DELESTAT
NEEDS 1 MASTER#RAAACCC

 FOLLOWS GET_INPUT

END

WSPRD4#/TO/PATH/TASK8
 PRIORITY 60
NEEDS 1 MASTER#AAA0RETU
NEEDS 1 MASTER#DELESTAT
NEEDS 1 MASTER#RAAACCC

 FOLLOWS GET_INPUT

END

问题分析

你之前尝试的正则(?s)^(WSPRD2.*?DELESTAT(?:.*?\n)*?)会匹配从WSPRD2#行到DELESTAT行的所有内容,无法精准定位并仅删除目标行,核心原因是它采用了范围覆盖式的贪婪匹配,而非针对性捕获目标行。

正确正则方案

正则表达式(PCRE风格)

(?s)(WSPRD2#(?:(?!END).)*?)(^.*DELESTAT.*$\n?)(.*?END)

替换规则

将匹配结果替换为:$1$3

正则说明

  • (?s):开启单行模式,使.可以匹配换行符
  • (WSPRD2#(?:(?!END).)*?):捕获WSPRD2#开头到DELESTAT行之前的所有内容,(?:(?!END).)*?确保匹配范围不会超出当前代码块(即遇到END就停止)
  • (^.*DELESTAT.*$\n?):精准捕获包含DELESTAT的整行(包括末尾的换行符)
  • (.*?END):捕获DELESTAT行之后到END的所有内容

替换时通过保留$1和$3的内容,直接剔除中间捕获的DELESTAT目标行。

替换后结果

WSPRD3#/TO/PATH/TASK5
 PRIORITY 60
NEEDS 1 MASTER#AAA0RTYU
NEEDS 1 MASTER#DELESTAT
NEEDS 1 MASTER#RAAA1JK

 FOLLOWS GET_INPUT

END

WSPRD2#/TO/PATH/TASK6
 PRIORITY 60
NEEDS 1 MASTER#AAA0RETU
NEEDS 1 MASTER#RAAACCC

 FOLLOWS GET_INPUT

END

WSPRD4#/TO/PATH/TASK8
 PRIORITY 60
NEEDS 1 MASTER#AAA0RETU
NEEDS 1 MASTER#DELESTAT
NEEDS 1 MASTER#RAAACCC

 FOLLOWS GET_INPUT

END

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 13:27:33