gpt4 book ai didi

regex - Vim 语法区域 - 回顾困惑

转载 作者:行者123 更新时间:2023-12-04 23:05:54 27 4
gpt4 key购买 nike

在 .vimrc 中定义以下内容或在 vim 命令行中执行:

syn match ndbMethods "[^. \t\n\r]\@<=[_a-z][_a-zA-Z0-9]*(\@="
hi ndbMethods guibg=#222222

在事件缓冲区中使用 C 风格的方法调用查看结果:
foo();

您将看到方法名称的首字符不匹配。

目的是让后视模式强制行首,文字 .或空格在任何匹配方法的第一个字符之前。

奇怪的是,使它成为一个负面的前瞻( \@<! )似乎有效!

有人会很友好地解释为什么这个lookbehind是不正确的吗?

最佳答案

更新:f ,往后看,你可能想检查 [. \t\n\r] ,不是 [^. \t\n\r] .因为目前,您说的是“不遵循这些字符之一的内容”,所以只有在到达 o 时才会出现。是否满足条件,因为 f确实不是那些角色之一。因此,您必须取消否定字符类,或者如您所见,否定后视。

我认为你也混淆了你的术语。

\@<=    positive lookbehind
\@<! negative lookbehind
\@= positive lookahead
\@! negative lookahead

关于regex - Vim 语法区域 - 回顾困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12146491/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com