【问题标题】:search and replace regex in gvim在 gvim 中搜索和替换正则表达式
【发布时间】:2013-01-02 20:42:11
【问题描述】:

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

模式示例如下:

(. xx,asdf,gh,df.)

我想让它像:

(.asdf,gh,df.)

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

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

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

有人可以帮我吗? 非常感谢您提前提供的帮助。

【问题讨论】:

  • 你能举出其他例子来说明你想要什么作为原始字符串和替换吗?仅从这个样本,我们无法判断
  • 您要搜索和突出显示或替换?
  • 我想搜索和替换...但是搜索本身的第一步不起作用。我正在使用的正则表达式如下(. 12, 0012, 23, 00),(. 11, 00ff, 34, 10),......我想在所有这些地方删除前两位数字字段以及 4 位字段前的逗号。 -@克里希纳

标签: regex unix vim


【解决方案1】:
:%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.)

【讨论】:

  • 谢谢@kent....但是这个搜索有问题...我希望搜索仅适用于 ex: (. 12, 2344, 34, 00.) 模式,而不是关于 ex(. 3323, 24,33.) 模式...
  • 谢谢@kent....但是这个搜索有问题...我希望搜索仅适用于 ex: (. 12, 2344, 34, 00.) 模式,而不是关于 ex(. 3323, 24,33.) 模式...让我举个例子。 (.00, 0000, 00, 00.),(.1222, 55,99.),(12, ffff, 45, 56.),(23, 00ff, 45, 77.),(.0ff0,22, 00.)........上面的模式是一个非常大的模式阵列的一部分。其中很少有 4 个字段模式,很少有 3 个字段模式,我希望搜索字符串仅适用于 4 个字段模式。
  • @krishnachaitanya 查看编辑
  • @krishnachaitanya 你应该通过点击他答案左侧的大箭头下方的小箭头来接受他的回答。
猜你喜欢
  • 2013-06-14
  • 2018-11-10
  • 2018-05-25
  • 2010-11-25
  • 2010-10-30
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多