【问题标题】:notepad++ regex: Removing multiple lines between keywordsnotepad++ 正则表达式:删除关键字之间的多行
【发布时间】: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'

我想删除第二个 DATUNT 之间的所有内容,即我希望这是最终结果:

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 片段,我想保留第一个片段并删除第二个片段......我遇到了更多困难

【问题讨论】:

    标签: regex notepad++


    【解决方案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 中的所有行?
      猜你喜欢
      • 1970-01-01
      • 2023-03-25
      • 1970-01-01
      • 1970-01-01
      • 2019-01-09
      • 1970-01-01
      • 1970-01-01
      • 2016-12-31
      • 2012-07-25
      相关资源
      最近更新 更多