我需要更换以下内容:

CREATE TABLE /*!32312 IF NOT EXISTS*/ `access`

CREATE TABLE IF NOT EXISTS `access`

我试过

:%s/\/\*\!\d+(.*)\*\//\1/g

但似乎没有。我做错了什么?

有帮助吗?

解决方案

vim需要反斜杠+(或使用*代替)。此外,您需要在vim中使用反斜杠分组括号。因此:

:%s/\/\*\!\d\+\(.*\)\*\//\1/g

是的,vim的老式posix regexes很糟糕:/

编辑:如下面的评论所述,+如果转义为\ +,则可以正常工作。并且\ d实际上是支持的,oops。编辑示例正则表达式以纠正此问题。另请参阅Brian Carper的示例,了解更简洁易读的版本。

其他提示

使用“非常神奇”,并使用默认值以外的分隔符,以便更容易阅读(并记住)。

:%s@\v/\*!\d+(.*)\*/@\1@g

没有“非常神奇”的你必须在 + ()之前放一个反斜杠(但不要在 * 或其他一些东西前面)。这不是很一致。

使用[^ *] +稍微不同且效率更高: - )

1,$s/\v\/\*\!\d+\s*([^*]+)\*\//\1
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top