Kom*_*ave 4 regex syntax vim match lookbehind
在.vimrc中定义以下内容或在vim命令行中执行:
syn match ndbMethods "[^. \t\n\r]\@<=[_a-z][_a-zA-Z0-9]*(\@="
hi ndbMethods guibg=#222222
Run Code Online (Sandbox Code Playgroud)
在活动缓冲区中使用C样式方法调用查看结果:
foo();
Run Code Online (Sandbox Code Playgroud)
您将看到方法名称的初始字符不匹配.
目的是使lookbehind模式强制.在任何匹配方法的第一个字符之前开始行,文字或空格.
奇怪的是,这使得这是一个负面的前瞻(\@<!)似乎工作!
有人会善意地解释为什么这种外观不正确吗?
更新:在f,向后看,你可能想要检查[. \t\n\r],而不是[^. \t\n\r].因为目前,你说的是" 不遵循其中一个字符的东西",所以只有达到o那个条件才能满足,因为f它确实不是那些字符之一.所以你必须要么取消否定角色类,要么就像你发现的那样,否定了外观.
我认为你的条款也让你感到困惑.
\@<= positive lookbehind
\@<! negative lookbehind
\@= positive lookahead
\@! negative lookahead
Run Code Online (Sandbox Code Playgroud)