Mic*_*per 8 regex vim regex-negation
使用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
(原因是,在实践中,我正在搜索长文件,我对'target'之前的最后一个'token'感兴趣.令牌有点像XML标签,但它不是XML,所以XML工具没有帮助.我知道我可以使用,\zs所以光标落在'目标'上然后向后搜索'令牌',但肯定有一个一步的解决方案!)
我希望这样的东西可行,但它不会:
/token\(.*countertoken.*\)\@!*target
我感兴趣的有很多这样的事件,当然,我正在搜索的文件并不像'foo'那样充满了常规.
在vim中是否有单行正则表达式?
如果您只对最后一个感兴趣token,则不必关心countertoken。一种可能性是查找最后一次出现的token并匹配所有内容直到下一次出现target。
/.*\zs\(token\).\{-}\(target\)
解释:
.*\zs- 匹配最后一次出现的情况。\(token\)- 匹配字符串“token”.\{-}非贪婪匹配\(target\)- 匹配字符串“目标”| 归档时间: | 
 | 
| 查看次数: | 323 次 | 
| 最近记录: |