1

Я не могу просто удалить все дефисы, потому что в других местах они используются как знаки минуса. Я могу найти эти даты с [0-9]\{4\}-[0-9]\{2\}-[0-9]\{2\} но не могу понять, как сохранить эти три подстановочные знаки различных цифр в памяти. Мои попытки заканчиваются заменой дат на строку поиска (например :%s/[0-9]\{4\}-[0-9]\{2\}-[0-9]\{2\}/[0-9]\{4\}[0-9]\{2\}[0-9]\{2\}/g).

Есть идеи? Если есть решение для командной строки, я бы тоже хотел это узнать. Спасибо!

2 ответа2

3

Вам просто нужно использовать группы захвата:

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

Скобки фиксируют совпадения внутри, затем обратные ссылки выводят эти группы захвата. Поскольку дефисы находятся вне групп, они исключены.

0

Я не знаю vim, так что это обходной путь, который вы все еще можете выполнить в vim:

Поскольку вы можете найти дефисы, встречающиеся в датах, замените их чем-то другим (символ или строка), который, как вы знаете, не встречается в документе. Затем выполните второй поиск / замену, чтобы заменить ваш новый символ / строку ничем, удаляя его.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .