Vim Regex输出错误

时间:2014-02-15 13:10:36

标签: regex vim vi backreference

我有一个日期列表(YYYY-M或YYYY-MM),并希望在前9个月之前加0前缀以保持一致性。数据格式:YYYY-M或YYYY-MM中的日期,后跟逗号和数字。 例如:

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

为什么我会在两位数之间获得额外的短划线-

1 个答案:

答案 0 :(得分:2)

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

所以命令应该是:

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