Vim/NeoVim正则匹配:非关键字非空白符后接关键字或空格
匹配指定双字符组合的Vim/Neovim正则写法
Vim正则的字符类([])不支持直接嵌入\k这类预定义原子,所以[^\s\k]无法生效。你可以用逻辑与组合条件来实现需求,正确的正则表达式如下:
\(\S\&!\k\)\(\k\|\s\)
各部分说明:
\(\S\&!\k\):匹配第一个字符,同时满足两个条件:\S:非空白字符(是\s的反义,覆盖所有可见字符)!\k:非关键字字符(自动适配vim.opt.iskeyword的配置)
\(\k\|\s\):匹配第二个字符,满足**关键字字符(\k)或空白字符(\s)**任一条件即可
验证案例:
- 匹配成功:
!b、$a、$ - 匹配失败:
ab(第一个字符是关键字)、!@(第二个字符既非关键字也非空白)、a(第一个字符是空白)
内容的提问来源于stack exchange,提问作者Dario Colombotto
相关产品推荐
相关产品推荐

