Notepad ++ - 一次性删除csv中的第二个和第三个逗号

时间:2017-11-14 21:05:28

标签: regex notepad++

我有一个csv文件,其中有数千行数据以逗号分隔,我需要从这些行中删除第二和第三个逗号

以下示例

8213201711,77,429,890,5d810ffc6
9801201711,103,088,818,5d810ffc
8113201711,102,829,857,5d810ffb
8113201711,104,186,726,5d810ffc
8101201711,86,337,068,5d810ffb1
8205201711,77,137,917,5d72788c9

我需要

8213201711,77429890,5d810ffc6
9801201711,103088818,5d810ffc
8113201711,102829857,5d810ffb
8113201711,104186726,5d810ffc
8101201711,86337068,5d810ffb1
8205201711,77137917,5d72788c9

我试图找到

^([^,]*,[^,]*),(.*)$

并替换为

\1\2

但是,它只删除了2次

2 个答案:

答案 0 :(得分:1)

尝试

^([^,]*,[^,]*),([^,]*),(.*)$

\1\2\3

请注意,表达式中的第2个和第3个文字逗号位于parens之外。

编辑:我想从最小编辑角度来看,使用^([^,]*,[^,]*),([^,]*),(.*),\1\2会更简单。我不能确定我可能忽略的所有搜索和替换选项,因此使用整条线似乎更安全。事后看来,这可能是愚蠢的。

答案 1 :(得分:0)

  • 控制 + ħ
  • 找到:^\d+,\d+\K,(\d+),
  • 替换为:$1
  • 检查环绕
  • 检查正则表达式
  • 全部替换

<强>解释

^           : begining of line
  \d+       : 1 or more digits
  ,         : a comma
  \d+       : 1 or more digits
  \K        : forget all we have seen until this position
  ,         : a comma
  (\d+)     : group 1, 1 or more digits
  ,         : a comma

如果您有其他字符而不是数字,则可以使用[^,]代替\d

<强>替换

$1          : content of group 1 (ie. the digits between 2nd and 3rd comma)

给定示例的结果:

8213201711,77429890,5d810ffc6
9801201711,103088818,5d810ffc
8113201711,102829857,5d810ffb
8113201711,104186726,5d810ffc
8101201711,86337068,5d810ffb1
8205201711,77137917,5d72788c9