Ответ 1
Вы очень близки
%s/103\(\d\{4}\)/123\1/g
Шаблон между \(
и \)
- это соответствие, которое может быть доступно в \1
, \2
и т.д. в порядке появления. Подробнее см. :help \(
.
Я думаю, что это довольно простое решение, но я пытаюсь найти ответ примерно на час и, похоже, не понимаю его.
Я пытаюсь выполнить поиск/замену в Vim, который заменит ряд чисел, начинающийся с 103
, и за ним следуют четыре цифры до 123
, за которыми следуют те же четыре цифры:
1033303
→ 1233303
1033213
→ 1233213
Самое близкое, что я пришел, это:
%s/103\d\{4}/123\0/g
Однако это приводит к тому, что все число соответствует \0
, как таковое:
1033303
→ 1231033303
Большое спасибо за любую помощь
Вы очень близки
%s/103\(\d\{4}\)/123\1/g
Шаблон между \(
и \)
- это соответствие, которое может быть доступно в \1
, \2
и т.д. в порядке появления. Подробнее см. :help \(
.
Теперь без группы захвата!
:%s/103\ze\d\{4}/123/g
\ze
установит конец матча там. Это позволяет вам сопоставить весь шаблон, но только сделать замену на его части.
:h /\ze
:h /\zs
Используйте группу захвата:
%s/103\(\d\{4}\)/123\1/g
Попробуйте следующее:
%s#103\(\d\{4}\)#123\1#g