我正在尝试在vim中学习正则表达式,并且被困在以下任务上:
我想替代一个匹配以下所有行的替代行,类似的行除外,其中包含Look aXXhead
的行。类似的,我的意思是a
和head
之间的任何东西,但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/