删除特定字符后的其余行

问题描述

例如我有一个具有相同数据格式的文件

DATA102:991n| DATA | Data222
DATA10:22 | DATA | Data222
DATA102:991 | DATA | Data222
DATA10:22 | DATA | Data222
DATA102:991 | DATA | Data222
DATA10:22 | DATA | Data222

我想删除“|”之后的所有内容,例如我想要这个输出

DATA102:991n
DATA10:22 
DATA102:991 
DATA10:22 
DATA102:991 
DATA10:22 

我如何使用正则表达式实现这一目标? 我试过查找:(.*|).* 然后替换 /1

但它不起作用我想在 |

之后删除所有内容

解决方法

  • Ctrl+H
  • 查找内容:^[^|]+\K.*$
  • 替换为:LEAVE EMPTY
  • 检查 环绕
  • 检查 正则表达式
  • 取消勾选 . matches newline
  • 全部替换

说明:

^           # beginning of line
    [^|]+       # 1 or more any character that is not a pipe
    \K          # forget all we have seen until this position
    .*          # 1 or more any character but newline
$           # end of line

屏幕截图(之前):

enter image description here

屏幕截图(之后):

enter image description here

,

你可以使用

查找内容[ \t]*\|.*
替换为

参见regex demo详情

  • [ \t]* - 零个或多个空格或制表符
  • \| - | 字符
  • .* - 除换行符以外的零个或多个字符。

enter image description here

,

如果您有相同格式的数据,另一种选择是使模式更具体地匹配单词字符、冒号和管道。

在替换中使用空字符串。

^\w+:\w+\K\h*\|.*

说明

  • ^ 字符串开头
  • \w+:\w+ 匹配 1 个以上单词字符之间的 :
  • \K 清除匹配缓冲区(暂时忘记匹配的内容以保留它)
  • \h*\|.* 匹配 0+ 个水平空白字符,| 和要删除的行的其余部分

enter image description here