2014-02-15 5 views
1

У меня есть список дат (YYYY-M или YYYY-MM) и вы хотите префикс 0 до первых 9 месяцев для согласованности. Формат данных: дата в ГГГГ-М или ГГГГ-ММ, затем запятая и номер. Например:Vim Regex дает неверный вывод

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, group 0 = целая строка. – falsetru

+0

Спасибо! Это сработало :) – Ajax

 Смежные вопросы

  • Нет связанных вопросов^_^