当您尝试从一行中删除 html 标签时,一种可能的方法是使用 :s 命令并编写一个同时理解标签开头和结尾的正则表达式。我的目标是:
:s %</?center>%%g
但是这样,vim 说它什么也没找到。所以我不得不改用以下方法,这很有效:
:s %</*center>%%g
为什么一个有效而另一个无效?不应该?
说“之前的角色可以来一次,或者根本不来”吗?
你需要?
用\
.
参考帮助页面:
:h pattern-overview
他们不一样。
这 ?(问号)仅匹配前面的字符 0 或 1 次,例如,colou?r 将同时找到 color(0 次)和 color(1 次)。
*(星号或星号)与前面的字符匹配0 次或多次,例如,tre* 将找到 tree(2 次)、tread(1 次)和 trough(0 次)。
你能告诉我们将被替换的比赛吗?
此外,我知道这种操作是使用该命令完成的,该命令s/foo/bar/g
将替换每次出现的foo
withbar
如果你想像这样使用?
必须使用 vim 的very magic
正则表达式模式 ( \v
),但是这也将<
和解释>
为单词边界,所以现在需要对它们进行转义:
:%s,\v\</?center\>,,g
正如您所发现的,这里较短的选项是转义?
:
:%s,</\?center>,,g
查看:help /magic
更多。