【发布时间】:2012-12-16 12:17:10
【问题描述】:
使用 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 中是否有单行正则表达式?
【问题讨论】:
标签: regex vim regex-negation