最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
vim编辑器匹配字符串出现多少次
时间:2022-06-25 19:42:00 编辑:袖梨 来源:一聚教程网
vim结合正则表达式可以实现复杂的功能,如
vim中常用的查找替换 %s/匹配字符串/替换字符串/g
若只想匹配字符串的次数:
%s/字符串/&/gn
n,代表只报告匹配的个数,而不进行实际的替换。
如果只想当前行内的出现该字符串次数呢?
:s/字符串/&/gn
如果在m和n行之间查找 字符串 出现的次数
:m,ns/字符串/&/gn
如果每行的bbb不超过2个,简单地可以这样:
:%s/(bbb.*)bbb/1/
这条命令比较好理解,在普通vi下应该也可以用。但由于*的贪婪性,当bbb超过2个时会删除最后一个bbb而不是第二个。为了避免这个问题,上面的命令可以改写成:
:%s/(bbb.{-})bbb/1/
(bbb.*)@<=是一个所谓0宽度的“断言”(说老实话, 我一直对正则里某些术语的翻译大倒胃口),通俗地说它匹配的不是字符串而是“位置”。什么样的位置呢?这里就是那些前面匹配bbb.*的位置,即前面出现过bbb的位置。注意这里用了“那些”,因为这样的位置有很多,在第一个bbb的后面的位置都符合条件。那么第二个bbb出现的位置也符合条件,自然第二个bbb就匹配了下面这个表达式:
(bbb.*)@<=bbb
当然第三个第四个(如果有的话)也匹配,但第一次匹配是第二个bbb。
看来在断言中出现的量词,讨论其贪婪性时要小心了。
VIM真是强大,对正则表达式的语法扩展也是于主流之外自成体系,难免给我们又增加了一些学习的成本
相关文章
- 《无限暖暖》天星之羽获得位置介绍 12-20
- 《流放之路2》重铸台解锁方法介绍 12-20
- 《无限暖暖》瞄准那个亮亮的成就怎么做 12-20
- 《无限暖暖》魔气怪终结者完成方法 12-20
- 《无限暖暖》曙光毛团获得位置介绍 12-20
- 《无限暖暖》日光果获得位置介绍 12-20