正则表达式在等号之前不匹配表达式?

Regex to not match expression when before equal sign?

foo = bar
foo        = bar
bar = foo
bar = foo asdfghjk

有没有办法匹配不在等号左边的每个 foo,所以在这种情况下是最后两个?我试过:

(foo)([^=])

但这不起作用。我对正则表达式不是很好,我不知道从这里可以做什么。

此外,我正在尝试在 vim 中进行模式匹配。我不知道这是否有所作为。我知道括号必须用 \.

转义

你可以使用

:g/\vfoo(.*\=)@!/

Vim 测试:

g局部模式

  • \v - 设置非常神奇的模式以避免过度转义
  • foo - foo 字符串
  • (.*\=)@! - Vim 风格的经典负前瞻,这意味着在任何 0 个或多个字符(但换行字符)之后不能有 =可能。