2014-02-15 55 views
1

我有一个日期列表(YYYY-M或YYYY-MM)并且希望在前9个月前为0加上前缀以保持一致性。数据格式:日期为YYYY-M或YYYY-MM,后跟逗号和数字。 如:Vim正则表达式给出错误的输出

2012-1,789 
2012-11,563 

2012-1,789应改为2012-01,789。条目“2012-11,563”应保持不变。

正确的输出应该是:

2012-01,789 
2012-11,563 

我试着按照Vim的正则表达式。

:%s/-\(\d\),/-0\0,/g 

不过,我得到以下输出:

2012-0-1,789 
2012-11,563 

为什么会出现两个数字之间的额外破折号-

回答

2

捕获组编号从1开始,而不是从0开始。

所以命令应该是:

:%s/-\(\d\),/-0\1,/g 
+0

什么是组0代表什么? – Ajax

+0

@Ajax,组0 =整个匹配的字符串。 – falsetru

+0

谢谢!有效 :) – Ajax