代码之家  ›  专栏  ›  技术社区  ›  Ajax

Vim Regex输出错误

  •  1
  • Ajax  · 技术社区  · 11 年前

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

    2012-1,789
    2012-11,563
    

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

    正确的输出应为:

    2012-01,789
    2012-11,563
    

    我尝试在Vim中遵循正则表达式。

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

    但是,我得到了以下输出:

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

    为什么我要额外冲刺 - 两位数之间?

    1 回复  |  直到 11 年前
        1
  •  2
  •   falsetru    11 年前

    捕获组号从开始 1 ,不是来自 0 .

    因此,命令应该是:

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