对于此文本,使用 vim 7.2:
foo foo token foo foo countertoken foo foo token foo target foo foo countertoken foo
我想匹配每个以'token'开头并以'target'结尾的字符串,它不包含'countertoken'。
所以,在上面的例子中,我想匹配这个:
foo foo token foo foo countertoken foo foo token foo target foo foo countertoken foo
但不是这个:
foo foo
token foo foo countertoken foo footoken foo target foo foo countertoken foo
(这样做的原因是,实际上,我正在搜索长文件,并且我对“目标”之前的最后一个“令牌”感兴趣。令牌有点像 XML 标记,但它不是 XML,所以 XML工具无济于事。我知道我可以使用\zs
这样光标落在“目标”上,然后向后搜索“令牌”,但肯定有一个一步的解决方案!)
我希望这样的事情会起作用,但它没有:
/token\(.*countertoken.*\)\@!*target
有很多这样的事件我感兴趣,当然,我正在搜索的文件并没有像“foo”这样常规的东西。
vim 中是否有一个单行正则表达式?