Regex 在第一个'之间查找并替换&燃气轮机';接下来'<';精神抖擞
我有一个带有一些标题的html表:Regex 在第一个'之间查找并替换&燃气轮机';接下来'<';精神抖擞,regex,vim,Regex,Vim,我有一个带有一些标题的html表: <th>Header01</th> ... <th>Different Header 20</th> 我知道我可以使用:s/\%Vth/td/g将所有th替换为td,但是我如何使用Vim的regex来查找和替换和之间的所有内容呢/P pI尝试了以下操作但未成功/p 预编码:s/\%V\>(.*)\您可以使用 %s/>\(.\{-}\)</>{{ \1 }}</g %s/>\(.\{-}
<th>Header01</th>
...
<th>Different Header 20</th>
我知道我可以使用:s/\%Vth/td/g
将所有th
替换为td
,但是我如何使用Vim的regex来查找和替换
和之间的所有内容呢/P pI尝试了以下操作但未成功/p 预编码:s/\%V\>(.*)\您可以使用
%s/>\(.\{-}\)</>{{ \1 }}</g
-匹配一个%s/>\(.\{-}\){{{\1}}
\(.\{-}\)
-将任何0个或多个字符捕获到组1中(但换行符,如果需要包含换行符,请使用\\\
预先结束
),但尽可能少
g
对行执行多个搜索和替换操作。您可以使用
%s/>\(.\{-}\)</>{{ \1 }}</g
%s/>\(.\{-}\){{{\1}}
-匹配一个
\(.\{-}\)
-将任何0个或多个字符捕获到组1中(但换行符,如果需要包含换行符,请使用\\\
预先结束
),但尽可能少p替换为代码{{\1}/code,代码{{/code,组1值和代码}>
g
在行上执行多个搜索和替换操作。如果您愿意冒险在vim中通过正则表达式更改html/vim,您可以执行以下操作:
%s/>[^<]*</>{{ & }}</g
%s/>[^如果您愿意冒险在vim中通过正则表达式更改html/vim,您可以执行以下操作:
%s/>[^<]*</>{{ & }}</g
%s/>[^我可能误读了这个问题,但似乎所需的替换文本是在3个空格(而不是在原始匹配文本周围)“用{{}替换第一个>和下一个>之间的所有内容”。如果正确,则以下简单的替换命令应该可以工作:
%s/>.*</>{{ }}</g
%s/>.{{}}我可能误读了这个问题,但似乎所需的替换文本是在3个空格(而不是在原始匹配文本的周围):“用{{}替换第一个>和下一个<之间的所有内容”。如果正确,那么下面的简单替换命令应该可以工作:
%s/>.*</>{{ }}</g
%s/>.{{}如果每行只有一个标记-->内容,则可以执行以下操作:
:%norm cit{{ }}
正如您所知,“cit”是一个代表“changeintertag”的vim文本对象。
如果每行上有许多标记,可以尝试:
:%s,>\zs[^<]*\ze</.*,{{ }},g
:%s,>\zs[^如果每行只有一个标记-->内容,则可以执行以下操作:
:%norm cit{{ }}
正如您所知,“cit”是一个代表“changeintertag”的vim文本对象。
如果每行上有许多标记,可以尝试:
:%s,>\zs[^<]*\ze</.*,{{ }},g
:%s,>\zs[^Don escape
。Vim中的惰性量词是{-}
。作为一般规则,尝试s/\v>{-}。它可能适用于简单的HTML,但使用HTML解析器通常是一个更好的主意。好的,%s/>\(.{-}){\1}这只意味着你明白正则表达式不能适应所有类型的标记语言语法,当正则表达式可能找到你不想要的东西时,会出现一些边缘情况,反之亦然。@ScottSkiles在使用正则表达式(HTML)进行“查找并替换”时,你只需要稍微小心一点因为您的正则表达式可能与您认为的不匹配(在某些情况下),特别是如果您有一些复杂的HTML。不要逃避
。Vim中的惰性量词是{-}
。一般来说,尝试s/\v>{-}。它可能适用于简单的HTML,但使用HTML解析器通常是一个更好的主意。好的,%s/>\(\{-}\{{\1}}这只是意味着您了解正则表达式不能适应所有类型的标记语言语法,并且当正则表达式可能找到您不想要的东西时,会出现一些边缘情况,反之亦然。@ScottSkiles在使用正则表达式(在HTML上)进行“查找并替换”时,您只需要稍微小心一点因为您的正则表达式可能与您认为的不匹配(在某些情况下)特别是如果你有一些复杂的HTML。你指的@Kent?@ScottSkiles有什么风险?例如,ScottSkiles你有跨多行的,或者在一个中有
,等。
好吧,你最了解你的输入,如果你确信它会起作用,就去做吧。啊,谢谢你们两位。我没有看到初始值我从艾哈迈德那里得到了评论。@Kent,我修改了上面的内容,在Vim的视觉模式下运行,只选择了我想更改的行。这仍然危险吗?你指的@Kent?@ScottSkiles有什么风险。@ScottSkiles例如,你有跨越多行,或者在一行中有
,等。
你知道吗如果您确信输入效果最佳,就这样做。啊,谢谢你们。我没有看到艾哈迈德的最初评论。@Kent,我修改了上面的内容以Vim的视觉模式运行,只选择了我想要更改的行。这仍然危险吗?