正则表达式在等号之前不匹配表达式?
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 个或多个字符(但换行字符)之后不能有 =
可能。
foo = bar
foo = bar
bar = foo
bar = foo asdfghjk
有没有办法匹配不在等号左边的每个 foo
,所以在这种情况下是最后两个?我试过:
(foo)([^=])
但这不起作用。我对正则表达式不是很好,我不知道从这里可以做什么。
此外,我正在尝试在 vim 中进行模式匹配。我不知道这是否有所作为。我知道括号必须用 \
.
你可以使用
:g/\vfoo(.*\=)@!/
Vim 测试:
g
局部模式
\v
- 设置非常神奇的模式以避免过度转义foo
-foo
字符串(.*\=)@!
- Vim 风格的经典负前瞻,这意味着在任何 0 个或多个字符(但换行字符)之后不能有=
可能。