foo = bar
foo = bar
bar = foo
bar = foo asdfghjk
有没有办法匹配不在等号左边的每个 foo
,所以在这种情况下是最后两个?我试过:
(foo)([^=])
但这行不通。我不太擅长正则表达式,我不知道从这里做什么。
另外,我正在尝试在 vim 中进行模式匹配。我不知道这是否有什么不同。我知道括号必须用 \
转义。
最佳答案
你可以使用
:g/\vfoo(.*\=)@!/
Vim 测试:
g
全局模式
\v
- 设置非常神奇的模式以避免过度转义foo
-foo
字符串(.*\=)@!
- Vim 风格的经典否定前瞻,这意味着在任何 0 个或多个字符之后不能有=
(但是换行符)尽可能多。
关于正则表达式在等号之前不匹配表达式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65068409/