notepad++ 正则表达式:删除关键字之间的多行
Posted
技术标签:
【中文标题】notepad++ 正则表达式:删除关键字之间的多行【英文标题】:notepad++ regex: Removing multiple lines between keywords 【发布时间】:2014-11-20 07:37:36 【问题描述】:现状:
ODR+1'&
DPT+::LAS'&
ARR+::RSW'&
DAT+:021214'&
TVL+20141202:0835:20141202:1830:0+LAS+RSW+WN+596+ET'&
APD+73W+:1+:'&
APD+::415'&
CAR+O:WN'&
DAT+AA:021214:1400::::MKE*AD:021214:1430:::73W'&
ODR+2'&
DPT+::RSW'&
ARR+::LAS'&
DAT+:111214'&
TVL+20141211:1030:20141211:1500:0+RSW+LAS+WN+274+ET'&
APD+73W+:+:1'&
APD+::450'&
CAR+O:WN'&
DAT+AA:111214:1225::::MDW*AD:111214:1300:::73W'&
UNT+29+1'
我想删除第二个 DAT 到 UNT 之间的所有内容,即我希望这是最终结果:
ODR+1'&
DPT+::LAS'&
ARR+::RSW'&
DAT+:021214'&
TVL+20141202:0835:20141202:1830:0+LAS+RSW+WN+596+ET'&
APD+73W+:1+:'&
APD+::415'&
CAR+O:WN'&
DAT+AA:021214:1400::::MKE*AD:021214:1430:::73W'&
ODR+2'&
DPT+::RSW'&
ARR+::LAS'&
DAT+:111214'&
UNT+29+1'
由于存在多个无法区分的 TVL 片段,我想保留第一个片段并删除第二个片段......我遇到了更多困难
【问题讨论】:
【参考方案1】:^(.*?DAT.*?)DAT.*?(UNT)
试试这个。由$1$2
替换。查看演示。
http://regex101.com/r/lZ5mN8/56
【讨论】:
【参考方案2】:你需要使用DOTALL模式(?s)
来使点匹配偶线刹车,
(?s)^(.*?DAT.*?DAT[^\n]*\n).*?\n(?=UNT)
然后将匹配替换为$1
DEMO
似乎您正试图删除第三个 DAT 之后的行。如果是,那么您可以尝试以下方法,
(?s)^(.*?DAT.*?DAT.*?DAT[^\n]*\n).*?\n(?=UNT)
DEMO
【讨论】:
@hwnd 你为什么删除你的答案? 对不起...我输入和输出错误...您的答案适用于初始查询 您是要删除第二个 DAT 还是第三个 DAT 中的所有行?以上是关于notepad++ 正则表达式:删除关键字之间的多行的主要内容,如果未能解决你的问题,请参考以下文章