我正在使用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新手)似乎不起作用
:%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
file=[^']\+'
。 这将匹配file=
后面直到下一个'
的所有内容。 如果您想在第二部分中使用该名称,则可以在其周围再包装另一个捕获组()
。 - Tim(
和)
,但其他特殊字符如*[^$
等却不需要呢?对于从python正则表达式过来的人来说,这很令人困惑,因为在python中,括号直接用于捕获(例如,在python中,要获取一行的第一个和最后一个字符,你需要使用^(.).*(.)$
,但在vim中,你必须使用^\(.\).*\(.\)$
)。我猜我的困惑在于通常情况下,当你转义一个字符时,它意味着你想使用它的字面值;但在这种情况下,我们却相反,这感觉不一致,所以我很困惑。 - teepee