vim :匹配正则表达式

vim :match regexp

我想匹配无效的 C/C++ 行,这就是我使用下面的正则表达式的原因

/^[^#].+(.+[^;(){}])$/

使用命令 :match errorMsg: 我经常验证一些简单的条件 一行:

  1. 启动时没有 #(预处理器命令)
  2. 不以 ;,(),{}
  3. 结尾

将被视为错误行

但没有任何帮助

你可以使用

/\v^[^#].*$([;(){}])@<!/

详情:

  • \v - 避免过度转义特殊模式字符的非常神奇的模式
  • ^ - 行首
  • [^#] - # 以外的任何字符(不匹配 Vim 中的换行符)
  • .*$ - 一行的其余部分,零个或多个字符 (.*) 和行尾 ($)
  • ([;(){}])@<! - 允许 negative lookbehind;(){}就在字符串的末尾。

这是 this pattern demo(转换为 PCRE 只是为了演示目的)。

它适用于 Vim:

文件内容如

abc match me
abc no match;
match
# def no MATCH{}
}
{
(
)
;