我需要更换以下内容:
CREATE TABLE /*!32312 IF NOT EXISTS*/ `access`
到
CREATE TABLE IF NOT EXISTS `access`
我试过
:%s/\/\*\!\d+(.*)\*\//\1/g
但似乎没有。我做错了什么?
答案 0 :(得分:4)
vim需要反斜杠+(或使用*代替)。此外,您需要在vim中使用反斜杠分组括号。因此:
:%s/\/\*\!\d\+\(.*\)\*\//\1/g
是的,vim的老式posix regexes很糟糕:/
编辑:如下面的评论所述,+如果转义为\ +,则可以正常工作。并且\ d实际上是支持的,oops。编辑示例正则表达式以纠正此问题。另请参阅Brian Carper的示例,了解更简洁易读的版本。
答案 1 :(得分:4)
使用“非常神奇”,并使用默认值以外的分隔符,以便更容易阅读(并记住)。
:%s@\v/\*!\d+(.*)\*/@\1@g
如果没有“非常神奇”,你必须在+
和()
前面加一个反斜杠(但不要在*
或其他一些东西前面)。这不是很一致。
答案 2 :(得分:1)
使用[^ *] +稍微不同且效率更高: - )
1,$s/\v\/\*\!\d+\s*([^*]+)\*\//\1