regex - vim : 匹配正则表达式
问题描述
我想匹配一个无效的 C/C++ 行,这就是我使用下面的正则表达式的原因
/^[^#].+(.+[^;(){}])$/
使用 cmd :match errorMsg
: 和我的常规验证一些简单的条件一行:
- 开始时没有
#
(预处理器 cmds) - 不以 a 结尾
;,(),{}
将被视为不正确的行
但它没有任何帮助
解决方案
您可以使用
/\v^[^#].*$([;(){}])@<!/
详情:
\v
- 非常神奇的模式,以避免过度转义特殊模式字符^
- 一行的开始[^#]
#
- 除(Vim 中不匹配换行符)以外的任何字符.*$
- 一行的其余部分,零个或多个字符 (.*
) 和行尾 ($
)([;(){}])@<!
-否定的lookbehind , no;
,(
,)
,{
and}
被允许出现在字符串的末尾。
这是这个模式演示(转换为 PCRE 仅用于演示目的)。
它在 Vim 中工作:
文件内容如
abc match me
abc no match;
match
# def no MATCH{}
}
{
(
)
;
推荐阅读
- random - 这个函数是纯的吗?(随机计算,确定性结果)
- python - “不正确的字符串值”,但可以使用 UTF-8 解码
- 2sxc - 如何不在空列表中显示演示项目?
- selenium - how to set chrome download path in protractor
- python - 我可以将数据框中的字符串数据更改为特定格式的日期时间吗?
- c++ - 将文件读取到向量的向量,超出范围错误
- spring-boot - 我可以使用消息队列坐在我的应用程序和外部系统之间来跟踪所有发出的信息吗?
- node.js - 执行 react-native-init 命令时出错
- facebook - 如何允许 Facebook 同时从 localhost 和托管生产域的开发中登录?
- java - 如何在Java中保存字体文件?