我正在尝试在vim中学习正则表达式,并且被困在以下任务上:

我想替代一个匹配以下所有行的替代行,类似的行除外,其中包含Look aXXhead的行。类似的,我的意思是ahead之间的任何东西,但XX除外。

Look ahead
Look aYhead
Look aXhead
Look aXXhead
Look aXXXhead

如果这是相关的,我在尝试时会有最大的希望

:%s/Look a\(XX\)\@!head/*\0
:%s/Look a\(.*\&\(XX\)\@!\)head/*\0

由于我按下的Look ahead的宽度为零,因此仅与\(XX\)\@!匹配。

尝试像

:%s/Look a\(XX\)\@!.*head/*\0

错过了“三倍X”行。

那么,如何完成呢?

附言这是我有关堆栈交换的第一篇文章,因此,如果有更好的方法或地方解决此问题,请帮助我并纠正我。

最佳答案

怎么样:

/\vLook a(XXhead)@!.*head

或没有very magic:
/Look a\(XXhead\)\@!.*head

关于regex - vim regex:在模式中间与否定匹配,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25462492/

10-09 09:04