什么是正确的VIM regexp来搜索get=而不是==?
在以下代码中:什么是正确的VIM regexp来搜索get=而不是==?,regex,vim,Regex,Vim,在以下代码中: a = b = c == 1 我只想匹配前两个=,但不想匹配最后的= 我认为模式\可以工作,因为\匹配单词的开头,而code\>匹配单词的结尾。但事实并非如此。这个模式有什么问题,正确的模式是什么?这个正则表达式应该可以: [^=]=[^=] 如果您想在行首或行尾匹配单个=,它将中断-但我认为这不是您的模式的问题。vim支持lookarounds,因此您可以在=。这将只匹配行开始或结束处所需的=和偶数= \(=\)\@<!=\(=\)\@! \(=\)\@您不能使用\
a = b = c == 1
我只想匹配前两个=,但不想匹配最后的=
我认为模式
\
可以工作,因为\
匹配单词的开头,而code\>匹配单词的结尾。但事实并非如此。这个模式有什么问题,正确的模式是什么?这个正则表达式应该可以:
[^=]=[^=]
如果您想在行首或行尾匹配单个
=
,它将中断-但我认为这不是您的模式的问题。vim支持lookarounds,因此您可以在=。这将只匹配行开始或结束处所需的=和偶数=
\(=\)\@<!=\(=\)\@!
\(=\)\@您不能使用\
,因为通常,等号字符是而不是关键字字符。你可以用:set iskeyword+=
来解决这个问题,但这可能会对导航和语法高亮显示产生副作用。如果=
是行的开头,这将不起作用。正在寻找使锚正常工作的方法。谢谢。这是可行的,但是锚有什么问题?大概他们应该做同样的事情?@me2单词边界(\
)匹配单词的开头和结尾。我认为单词边界是一个字符,它与一个具有不同单词状态的字符相邻。例如,在a=
中,a
将是=
的单词边界。在==
中,这仍然是一个完整的单词。在这样简单的情况下,您不必使用组<代码>=\@同样有效。@ZyX感谢您的澄清;我不想在没有团队的情况下尝试;我只看到了groups的例子,我还想知道为什么\b=\b
不起作用。。。任何人?\
定义由'iskeyword'
选项定义的“关键字字符”组成的单词<代码>=不属于'iskeyword'
\b=\b不匹配,因为=
不是word