vim匹配数字组并替换

时间:2014-09-30 04:22:22

标签: regex vim replace find vi

我有一个包含以下格式数据的大文件:

regabc123456_user_domain_application_env_id
regdef789101_user_domain_application_env_id

在vim中我想进行搜索并替换(“_”代表“,”)并匹配机器名称(regabc123456)。 我正在尝试这个:

:%s/^reg.*\{6}_/^reg.*\{6},\ /g

^表示'reg'行的开头,因为所有内容都以此开头,然后'。*'表示之前的任何内容,但在六位数代码开始之前,我尝试用{6}来捕捉。

这似乎没有做我想要的。我可以匹配机器名称,但我不能用我想要的替换它。是否有更简单的方法来使用正则表达式识别机器名称?例如:

'reg'后跟三个小写字母后跟六个数字后跟一个下划线,然后替换?

感谢。

1 个答案:

答案 0 :(得分:1)

以下正则表达式会将regabc123456_替换为regabc123456,

:%s/^\(reg.*[0-9]\{6\}\)_/\1,/g

:%s/^\(reg[a-z]\{3\}[0-9]\{6\}\)_/\1,/g 

如果您想在逗号后面加一个空格,请在替换部分中以逗号后添加空格。

%s/^\(reg[a-z]\{3\}[0-9]\{6\}\)_/\1, /g

要匹配6位数字,您需要使用[0-9]\{6\}。它恰好重复了之前的令牌6次。