首页 > 解决方案 > 正则表达式在等号之前不匹配表达式?

问题描述

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

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

(foo)([^=])

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

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

标签: regexvim

解决方案


您可以使用

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

Vim 测试:

在此处输入图像描述

叶片g图案

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

推荐阅读