我有一个包含以下格式数据的大文件:
regabc123456_user_domain_application_env_id
regdef789101_user_domain_application_env_id
在vim中我想进行搜索并替换(“_”代表“,”)并匹配机器名称(regabc123456)。 我正在尝试这个:
:%s/^reg.*\{6}_/^reg.*\{6},\ /g
^表示'reg'行的开头,因为所有内容都以此开头,然后'。*'表示之前的任何内容,但在六位数代码开始之前,我尝试用{6}来捕捉。
这似乎没有做我想要的。我可以匹配机器名称,但我不能用我想要的替换它。是否有更简单的方法来使用正则表达式识别机器名称?例如:
'reg'后跟三个小写字母后跟六个数字后跟一个下划线,然后替换?
感谢。
答案 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次。