Regex 记事本++正则表达式:删除关键字之间的多行
现状:Regex 记事本++正则表达式:删除关键字之间的多行,regex,notepad++,Regex,Notepad++,现状: 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'&
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段,我想保留第一个段,只删除第二个段。。。。我遇到了更多的困难您需要使用DOTALL模式来使dot匹配均匀的线路制动器
(?s)^(.*?DAT.*?DAT[^\n]*\n).*?\n(?=UNT)
然后将匹配项替换为$1
看起来你想在第三次DAT后删除这些行。如果是,那么您可以尝试以下方法
(?s)^(.*?DAT.*?DAT.*?DAT[^\n]*\n).*?\n(?=UNT)
试试这个。重铺$1$2。参见演示
@为什么你删除了你的答案?对不起,我的错。。。我给出了错误的输入和输出…您的答案对最初的问题有效。您想删除第二个DAT或第三个DAT中的所有行吗?
^(.*?DAT.*?)DAT.*?(UNT)