vim搜索并替换号码

Saw*_*wan 3 vim

我有一个模式,CSV文件中的数字之间有双引号.我可以通过[0-9] \"[0-9]搜索模式,但是如何在删除双引号时保留值.CSV格式如下:

"1234"5678","Text1","Text2"
"987654321","Text3","text4"
"7812891"3","Text5","Text6"
Run Code Online (Sandbox Code Playgroud)

你可能会注意到我想删除的某些数字之间有双引号.

我尝试了以下方法,这是不正确的:

:%s/[0-9]\"[0-9]/[0-9][0-9]/g
Run Code Online (Sandbox Code Playgroud)

是否可以在每个搜索模式下执行命令,可以向前移动一个字符并删除它.如何在搜索和替换中嵌入"lx".

dev*_*ull 7

你需要捕获组.尝试:

:%s/\(\d\)"\(\d\)/\1\2/g
Run Code Online (Sandbox Code Playgroud)

[数字也可以表示\d.]


Tas*_*sos 5

我知道这个问题已经得到解答,但这是另一种方法:

\n\n
:%s/\\d\\zs"\\ze\\d\n
Run Code Online (Sandbox Code Playgroud)\n\n

解释:

\n\n

%s\xc2\xa0\xc2\xa0替换整个缓冲区
\n \\d\xc2\xa0\xc2\xa0\xc2\xa0查找数字
\n \\zs\xc2\xa0在此处设置匹配的开始
\n "\xc2\xa0\xc2\ xa0\xc2\xa0\xc2\xa0\xc2\xa0查找双引号
\n \\ze\xc2\xa0在此处设置匹配结束
\n \\d\xc2\xa0\xc2\xa0\xc2\xa0查找数字

\n\n

这使得替换命令仅匹配数字包围的双引号。
\n省略替换字符串只会删除匹配项。

\n