我有一个管道定义的txt文件,中间有一个自由文本列,有时自由文本包含一个管道,当我将其导入Excel时会抛出整个文件。
我知道每行应有4个管道,因此我想标识具有4个以上管道的行,并用空格替换第3个。
位置|日期|评论|系统|
NYC | 2019年10月10日|正确| windows |
洛杉矶| 10.10.2019 |错误| 5 | windows |
芝加哥| 2019年10月10日|错误3 | Linux |
我已经弄清楚了如何识别具有4个以上管道的线:
^([^|\r\n]*\|){5}
我无法找到如何更换第三根管道。
感谢您的帮助。
答案 0 :(得分:1)
逻辑是:捕获N-1
个非管道数,后接一个管道,并将以下0个或多个非管道归入组1,然后匹配第N个管道,然后捕获M-N
非管道字符的数量,然后加上管道(N
是要删除出现的管道,M
是一行中应该有多少个管道)。
您可以使用
查找内容:^((?:[^|\r\n]*\|){2}[^|\r\n]*)\|((?:[^|\r\n]*\|){2})
替换为:$1 $2
详细信息
^
-一行的开头((?:[^|\r\n]*\|){2}[^|\r\n]*)
-捕获组1($1
):两次重复,分别是管道+ LF和CR以外的0+个字符,接着是管道,然后是管道+ LF和CR <以外的0+个字符< / li>
\|
-第三个|
((?:[^|\r\n]*\|){2})
-捕获组2($2
):两个重复的0+字符(管道,LF和CR除外),后跟管道。测试和设置: