搜索get =但不是==的正确VIM正则表达式是什么?

时间:2013-03-29 05:52:51

标签: regex vim

在以下代码中:

a = b = c == 1

我想只匹配前两个=,而不是最后的==。

我认为模式\<=\>会起作用,因为\<匹配单词的开头,\>匹配结尾。但事实并非如此。这种模式有什么问题,正确的模式是什么?

3 个答案:

答案 0 :(得分:5)

vim支持外观,因此你可以在=周围使用负向后观和负向前瞻。这将仅匹配行的开头或结尾处的所需=和偶数=。

\(=\)\@<!=\(=\)\@!

答案 1 :(得分:4)

您无法使用\<=\>,因为通常情况下,等号字符 关键字字符。您可以使用:set iskeyword+==修复此问题,但这可能会导致导航和语法突出显示的副作用。

答案 2 :(得分:0)

这个正则表达式应该有效:

[^=]=[^=]

如果您想在开头或结尾处匹配单个=,它会中断 - 但我认为这不是您的模式的问题。