最新下载
热门教程
- 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真是强大,对正则表达式的语法扩展也是于主流之外自成体系,难免给我们又增加了一些学习的成本
相关文章
- 百度网盘SVIP激活码能用的有哪些 百度网盘vip免费领取 11-04
 - 打个螺丝兑换码能用的有哪些 2025最新有效兑换码汇总 11-04
 - 抓大鹅有效兑换码有哪些 2025最新可用兑换码大全 11-04
 - 密室出逃兑换码能用的有哪些 2025最新有效兑换码大全 11-04
 - 猪了个猪兑换码最新可用 2025最新有效兑换码汇总 11-04
 - 羊了个羊星球兑换码能用的有哪些 2025最新有效兑换码 11-04