例如,如果我想<person>Nancy</person>
用vim<person>Henry</person>
中的所有出现替换?<person>*</person>
目前,我有:
%s:/'<person>*<\/person>/<person>Henry<\/person>
但显然,这是错误的。
:%s/\v(<person>).\{-}(<\/person>)/\1Henry\2/g
做你想做的,但是,是的,英戈说的。
\v
意思是“非常神奇”:这是避免反斜杠炎的便捷方法。
(something)
(或\(something\)
没有\v
修饰符)是一个子表达式,您可以在您的搜索模式中拥有多达九个,并在\1...\9
您的替换模式中甚至稍后在您的搜索模式中重用这些捕获组。\0
代表整场比赛。在这里,开始标签被引用为\1
,结束标签被引用为\2
。
对于单个替换,Vim 提供了方便的cit
(更改内部标记)命令。
对于全局替换,答案取决于您的标签(汤)的结构如何。HTML / XML 具有相当灵活的语法,因此您可以用多种方式表达相同的内容,构建一个匹配所有内容的正则表达式变得越来越困难。(试图抓住所有案例是徒劳的;请参阅这个著名的答案。)