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

标签 regex vim

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

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

(foo)([^=])

但这行不通。我不太擅长正则表达式,我不知道从这里做什么。

另外,我正在尝试在 vim 中进行模式匹配。我不知道这是否有什么不同。我知道括号必须用 \ 转义。

最佳答案

你可以使用

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

Vim 测试:

enter image description here

g全局模式

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

关于正则表达式在等号之前不匹配表达式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65068409/

相关文章:

search - 在突出显示的搜索模式之前/之后删除行中的所有文本

c# - 针对 "%"搜索字符串

php - 使用正则表达式删除字符串的末尾部分

java - 字符串与正则表达式匹配

java regex 只获取文件名

javascript - 调整正则表达式以删除尾随小数点+零(如果没有分数)

vim 映射只适用于 noremap

vim - 你能在 vim 中做交互式宏或录音吗?

vim 向内和向外缩进一段代码

bash - 如何避免 vim 内部的 vim 进行 git/mercurial merge ?