Как я могу изменить порядок частей текста с помощью поиска и замены в vi (m)? - PullRequest
0 голосов
/ 01 февраля 2011

У меня есть данные в этом формате:

03/18/2010
03/18/2010
04/19/2010

Я бы хотел переместить год из конца каждой строки даты в начало, например:

2010/03/18
2010/03/18
2010/04/19

Мне нужен шаблон поиска / замены, который сделает это. Я подумал, что мне может понадобиться использовать амперсанд вот так:

:%s/'[0-9]\{2\}'\/'[0-9]\{2\}'\/'[0-9]\{4\}'/&3\/&1\/&2/

Или что-то в этом роде, но я просто не уверен. Возможен ли этот поиск / замена? Если так, кто-нибудь будет так добр, чтобы просветить меня?

1 Ответ

3 голосов
/ 01 февраля 2011

Конечно, это возможно.

:%s+\([0-9]\{2\}\)/\([0-9]\{2\}\)/\([0-9]\{4\}\)+\3/\1/\2+

Я изменил следующее:

  • Вместо использования косой черты для разделения между различными частями команды замены, я использовал символы +.Разделитель не должен быть косой чертой.Какой бы символ вы ни ставили после %s, он становится разделителем.Это полезно, потому что нам нужно использовать косую черту в шаблонах.

  • Я использовал (экранированные) скобки для создания групп в регулярном выражении.Это позволяет нам ссылаться на эти группы в шаблоне замены, используя обратную косую черту, за которой следует номер группы.Группы нумеруются слева направо, начиная с 1, а группа 0 - это полное совпадение.

...