如何在vim中使用正则表达式组查找替换

时间:2012-06-17 17:35:56

标签: regex vim

我正在替换所有带有div的内联gist片段以非阻塞方式加载它们。修改具有以下内容的所有旧文章

<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 个答案:

答案 0 :(得分:49)

我得到了它的工作:

:%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. 我使用!代替/作为分隔符,以避免必须转义路径斜杠
  2. 您需要在尝试中逃离(d+)
  3. 最后你有额外的/
  4. 要插入匹配组,请使用\1代替{1}