gpt4 book ai didi

regex - 有没有办法在 vim 正则表达式中进行负前瞻?

转载 作者:行者123 更新时间:2023-12-03 09:21:52 24 4
gpt4 key购买 nike

在 Vim 中,有没有办法搜索匹配说 abc 的行?但不包含 xyz以后上线?所以以下几行将匹配:

The abc is the best
The first three letters are abc

并且以下内容不匹配:
The abc is the best but xyz is cheaper
The first three letters are abc and the last are xyz

我知道如下语法:
/abc\(xyz\)\@!

但这只会避免匹配 abcxyz如果两者之间有任何东西,则不会,例如 abc-xyz .使用
/abc.*\(xyz\)\@!

也不起作用,因为在 xyz 的行后面有很多位置不匹配。

(我应该注意,在命令行上我会做类似 grep abc <infile | grep -v xyz 的事情,但我想在 Vim 中以交互方式执行上述操作。)

最佳答案

您的尝试非常接近;您需要.* 允许匹配和断言的后来不匹配之间的任意距离进入负面前瞻 :

/abc\(.*xyz\)\@!

我想这是有效的,因为对于 .* 的所有可能匹配项都尝试不匹配。 ,并且只有当所有分支都用完时才是 \@!声明为已完成。

关于regex - 有没有办法在 vim 正则表达式中进行负前瞻?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21148467/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com