用于HTML搜索和替换的正则表达式

时间:2013-03-25 19:55:19

标签: regex vim vi

我正在vim中进行简单的搜索和替换命令,并且我试图逃避<>/字符,以便我可以在搜索表达式中使用它们。我发现有更优雅的方式来查找HTML标记,但我真正需要的是一个本地化的搜索和替换命令,它将<h1>UNKNOWN MISSION</h2>替换为<h2>UNKNOWN MISSION</h2>。这是我的命令,我试图逃避特殊字符:

:%s/\<h1\>UNKNOWN MISSION\<\/h2\>/\<h2\>UNKNOWN MISSION\<\/h2\>/

模式不匹配。有任何想法吗?

3 个答案:

答案 0 :(得分:3)

:%s/<h1>UNKNOWN MISSION<\/h2>/<h2>UNKNOWN MISSION<\/h2>/g

似乎对我有用。你只需要逃避反斜杠。

答案 1 :(得分:1)

您无需转义<>个字符,请尝试以下操作:

:%s/<h1>UNKNOWN MISSION<\/h2>/<h2>UNKNOWN MISSION<\/h2>/

答案 2 :(得分:1)

我会做以下事情......

  1. 将光标放在UNKNOWN MISSION的第一个实例上:

    /<h1<CR>
    
  2. 2之前使用:

    yt2
    
  3. 替换为:

    :%s+<C-r>"2>+<C-r>"1>
    

    其中<C-r>"用于在命令行中插入默认寄存器的内容,+用作替代分隔符,以避免转义斜杠。插入后,整个命令如下所示:

    %s+<h1>UNKNOWN MISSION</h2>+<h1>UNKNOWN MISSION</h1>
    
  4. 如果需要,请添加/g标记。