我有一个包含大量<swf ...> ..... </ swf>的文档.我想删除所有这些.我键入时使用vi
:%s/\<swf[^\/swf>]+\/swf\>//g
Run Code Online (Sandbox Code Playgroud)
我希望这会起作用,但它与任何东西都不相符.
您可以使用以下命令从缓冲区中删除所有这些:
:%s!<swf.\{-}/swf>!!
Run Code Online (Sandbox Code Playgroud)
如果您还有可能在两行上分割的标记,则可以添加\_修饰符以使.匹配换行符:
:%s!<swf\_.\{-}/swf>!!
Run Code Online (Sandbox Code Playgroud)
假设您想要删除标签及其包含的内容,如果您只想删除标签并保留内容
:%s!</\?swf.\{-}>!!
Run Code Online (Sandbox Code Playgroud)
笔记:
<或>s在替换命令之后放置的第一个字符:这消除了在模式中转义正斜杠的需要编辑:在你的评论后扩展我的答案
!而不是/这样,我不必引用模式中的反斜杠(参见上面的第二点)g在最后修改,因为我有:set gdefault我的.vimrc,因为永远(这意味着在默认情况下,Vim会替代所有比赛在一条线上,而不是仅仅是第一,所以恢复的意思/g)\{-}是*量词的"ungreedy"版本,即它匹配前面原子的0或更多但是尽可能少 - 这有助于确保您的搜索模式将扩展到第一个"结束标记"而不是最后一个.HTH
| 归档时间: |
|
| 查看次数: |
1218 次 |
| 最近记录: |