正则表达式:如何用零替换数字?

时间:2017-04-27 13:24:45

标签: regex linux vim vi

我在文件中有以下行

  

ENGINE = InnoDB AUTO_INCREMENT = 220124

     

ENGINE = InnoDB AUTO_INCREMENT = 232

     

ENGINE = InnoDB AUTO_INCREMENT = 22

我想获得如下输出

  

ENGINE = InnoDB AUTO_INCREMENT = 0

     

ENGINE = InnoDB AUTO_INCREMENT = 0

     

ENGINE = InnoDB AUTO_INCREMENT = 0

我用过

  

%S / AUTO_INCREMENT = * / AUTO_INCREMENT = 0 /克

但没有用。

5 个答案:

答案 0 :(得分:2)

用0

替换数字
:%s/\d\+/0

答案 1 :(得分:1)

我愿意:

%s/=\s*\d\+\s*$/=0/
  • 它只会更改...=numbers,不会更改行中间的数字。例如。在您的变量名称中,如果有
  • = 123更改为=0
  • =123(spaces....)更改为=0
  • 不会更改=foo123

答案 2 :(得分:0)

取决于您想要使用的语言,因此我无法真正帮助您使用代码。但是,正则表达式很简单,你可以搜索:

ENGINE=InnoDB AUTO_INCREMENT=(\d+)

并将其替换为:

ENGINE=InnoDB AUTO_INCREMENT=0

答案 3 :(得分:0)

您还可以使用捕获组:

%s/\(.*=\).*/\10

这很有效,因为Vim的正则表达式引擎很贪婪。它不是在第一个等号中停止匹配,而是继续捕获,直到找到最后一个等号。

答案 4 :(得分:0)

我试过这个并且有效。

%s/AUTO_INCREMENT=[0-9]*/AUTO_INCREMENT=0/g