Как найти замену с помощью групп регулярных выражений в vim
Я заменяю все встроенные фрагменты gist с div, чтобы загрузить их неблокирующим способом. Чтобы изменить все устаревшие статьи, содержащие следующие
<script src='https://gist.github.com/1234.js?file=gistfile1.sh'></script>
Мне нужно заменить его следующим:
<div data-gist=1234><a href='http://gist.github.com/1234'>gistfile1.m</a></div>
Пока что я пытаюсь (vim newb здесь) - кажется, не работает
:%s/<script src='https:\/\/gist.github.com\/(d+).js?file=gistfile1.sh'><\/script>/<div data-gist={1}><a href='http://gist.github.com/{1}'>gistfile1.m</a></div>//g
Ответы
Ответ 1
Я получил это для работы с этим:
:%s!<script src='https://gist.github.com/\(\d\+\).js?file=gistfile1.sh'></script>!<div data-gist=\1><a href='http://gist.github.com/\1'>gistfile1.m</a></div>!g
Пара примечаний:
- Я использовал
!
вместо /
как разделитель, чтобы избежать необходимости сбрасывать косые черты
- Вам нужно избежать
(
, d
, +
и )
в вашей попытке.
- У вас был дополнительный
/
в самом конце.
- Чтобы вставить группу соответствия, используйте
\1
вместо {1}