我需要替换以下内容:
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 正则表达式很糟糕:/
编辑:正如下面评论中提到的,如果转义为 \+,+ 确实有效。并且 \d 实际上是受支持的,哎呀。编辑了示例正则表达式以纠正此问题。另请参阅 Brian Carper 的示例以获得更简洁易读的版本。
使用“非常神奇”,并使用默认分隔符以外的分隔符使其更易于阅读(和记住)。
:%s@\v/\*!\d+(.*)\*/@\1@g
如果没有“非常神奇”,您必须在 and 前面加上反斜杠+
(()
但不能在前面*
或其他一些东西前面)。这不是很一致。
使用 [^*]+ 略有不同且效率更高 :-)
1,$s/\v\/\*\!\d+\s*([^*]+)\*\//\1