1

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

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

但它没有用我想删除之后的所有内容|

4

3 回答 3

3
  • Ctrl+H
  • 找什么:^[^|]+\K.*$
  • 用。。。来代替:LEAVE EMPTY
  • 检查 环绕
  • CHECK 正则表达式
  • 取消选中 . matches newline
  • Replace all

解释:

^           # 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

截图(之前):

在此处输入图像描述

截图(之后):

在此处输入图像描述

于 2021-01-03T17:47:29.297 回答
0

您可以使用

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

请参阅正则表达式演示详情

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

在此处输入图像描述

于 2021-01-03T18:50:33.100 回答
0

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

在替换中使用空字符串。

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

解释

  • ^字符串的开始
  • \w+:\w+匹配:1+ 个单词字符
  • \K清除匹配缓冲区(忘记匹配到现在的内容以保留它)
  • \h*\|.*匹配 0+ 个水平空白字符,|其余行被删除

在此处输入图像描述

于 2021-01-04T09:27:26.483 回答