如何更换第4个“|”在每一行都有一个空格

时间:2015-02-02 23:14:37

标签: regex notepad++

我有这种格式的大量数据。

DATA1|DATA2|00/00|JOHN|SMITH|

如何使用正则表达式修改它,以便我可以替换第4个“|”有空格所以它会像这样输出吗?

DATA1|DATA2|00/00|JOHN SMITH|

非常感谢

2 个答案:

答案 0 :(得分:1)

查找内容:

^((?:[^|]*\|){3}[^|]*)\|

替换为:

\1 

请注意,您需要在\1

之后添加空格

DEMO

查找内容:

^(?:[^|]*\|){3}[^|]*\K\|

替换为:

 replace with a space.

DEMO

答案 1 :(得分:0)

您可以将(([^\|]+\|[^\|]+\|[^\|]+\|[^\|]+)\|)替换为\2。以下是正则表达式的作用:

(第一个捕获组的开头
(第二个捕获组的开始

以下部分重复三次
[^\|]匹配任何不是|字符的字符 +确保上述部分([^\|]匹配一次或多次)
\|字面上匹配|字符 以上部分重复三次

[^\|]匹配任何不是|字符的字符 +确保上述部分([^\|]匹配一次或多次)

)第二个捕获组结束 \|字面上匹配|字符 )结束了第一个捕获组。

接下来,您可以将其替换为\2(末尾有空格)。 Here's a live demo。确保将g (global)修饰符与正则表达式一起使用(通常在表达式的末尾),以确保它不会在第一次查找时返回。