当你尝试从一行中删除html标签时,一种可行的方法是使用:s命令并编写一个同时理解标签开头和结尾的正则表达式。我的意思是:
:s %</?center>%%g
但是这样,vim说它找不到任何东西。所以我不得不使用以下代码,它起作用了:
:s %</*center>%%g
为什么那个有效但另一个无效?不应该?
说“之前的角色可以来过一次,也可能根本不会出现”?
答案 0 :(得分:4)
您需要使用?
转义\
。
参阅帮助页面:
:h pattern-overview
答案 1 :(得分:2)
它们不一样。
? (问号)匹配前一个字符 0或1次 只有,例如,colou?r会同时找到颜色(0次)和颜色 (1次)。
*(星号或星号)匹配前一个字符 0或更多 时间,例如,tre *将找到树(2次)和胎面(1次) 和低谷(0次)。
你能告诉我们将被替换的比赛吗?
此外,我知道这种操作是使用该命令s/foo/bar/g
完成的,该命令将用foo
bar
的每个事件。
答案 2 :(得分:2)
如果你想使用这样的?
必须使用vim的very magic
正则表达式模式(\v
),那么这也会解释<
和>
作为单词边界所以现在他们需要被转义:
:%s,\v\</?center\>,,g
正如您所发现的,此处较短的选项是逃避?
:
:%s,</\?center>,,g
有关详情,请参阅:help /magic
。