在gvim中搜索并替换正则表达式

时间:2013-01-02 20:42:11

标签: regex unix vim

我正在尝试替换/删除模式中的几列。

模式的例子如下:

(. xx,asdf,gh,df.)

我想这样做:

(.asdf,gh,df.)

对于搜索,我使用/(.\zs[^,]\ze[^,^,^.)] 这对搜索没有帮助。 这也突出了每个模式的第一列。即ex(.12,23,34。)模式。

我的搜索答案是在第一个模式中突出显示x,在第二个模式中突出显示1之前的空白空间。

我希望我的搜索仅适用于第一种模式。 搜索我的第一步是没有按预期工作。

有人可以帮助我。 非常感谢你提前帮助。

1 个答案:

答案 0 :(得分:2)

:%s#\v(\(\.)([^,]{-},)(.{-}\.\))#\1\3#g 

这将替换:(. xx,asdf,gh,df.) - > (.asdf,gh,df.)

如果您只想突出显示它(在您的情况下是_xx“_表示空格”),您可以尝试使用后视:

/\((\.\)\@<=[^,]*   
根据评论

编辑

假设我们有一个文件:

(. xx,asdf,gh,df,foo.)
(. xx,asdf,gh,df.)
(. xx,gh,df.)
(. xx,df.)
(. xx.)

在vim中:

:%s#\v(\(\.)([^,]*,)([^,]*,[^,]*,[^,\.]*\.\))#\1\3#g 
我们得到了:

(. xx,asdf,gh,df,foo.)
(.asdf,gh,df.)
(. xx,gh,df.)
(. xx,df.)
(. xx.)