我有一个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次
答案 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