我有一种模式,CSV文件中的数字之间有双引号。 我可以通过[0-9] \“[0-9]搜索模式,但是如何在删除双引号时保留值.CSV格式如下:
"1234"5678","Text1","Text2"
"987654321","Text3","text4"
"7812891"3","Text5","Text6"
正如您可能会注意到我想删除的某些数字之间有双引号。
我尝试了以下方法,这是不正确的:
:%s/[0-9]\"[0-9]/[0-9][0-9]/g
是否可以在每个搜索模式下执行命令,可以向前移动一个字符并删除它。如何在搜索和替换中嵌入“lx”。
答案 0 :(得分:7)
您需要捕获群组。尝试:
:%s/\(\d\)"\(\d\)/\1\2/g
[数字也可以用\d
表示。]
答案 1 :(得分:2)
我知道这个问题已经回答了,但这是另一种方法:
:%s/\d\zs"\ze\d
说明:
%s
替换整个缓冲区
\d
查找数字
\zs
在此处设置匹配的开始
"
查找双引号
\ze
在此处设置匹配结束
\d
查找数字
这使得substitute命令只匹配数字包围的双引号 省略替换字符串只会删除匹配项。
答案 2 :(得分:1)
您需要在正则表达式中使用边界。
试试这个:
:%s/\([0-9]\)"\([0-9]\)/\1\2/g
答案 3 :(得分:1)
有点天真的解决方案:
%s/^"/BEGINNING OF LINE QUOTE MARK/g
%s/\",\"/quote comma quote/g
%s/\"$/quota end of line/g
%s/\"//g
%s/quota end of line/"/g
%s/quote comma quote/","/g
%s/BEGINNING OF LINE QUOTE MARK/"/g
可以很容易地创建一个宏,并根据需要多次调用。