You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Vim中如何限制关键词匹配次数并删除指定区间内容?

解决Vim中的文本匹配与删除问题

一、删除第1个“thu”到第3个“thu”之间内容的命令

要删除每行中第1个到第3个“thu”之间的内容,可使用以下全局替换命令:

:%s/thu\(.*\)thu\(.*\)thu/thu thu/g
  • :%s/ 表示对所有行执行替换操作
  • thu\(.*\)thu\(.*\)thu 依次匹配第1个thu、中间任意内容、第2个thu、中间任意内容、第3个thu
  • thu thu 为替换结果,保留首尾的thu并删除中间部分
  • /g 表示每行内所有符合规则的匹配都执行替换

如果仅处理当前行,去掉%即可:

:s/thu\(.*\)thu\(.*\)thu/thu thu/g

二、限制正则匹配次数的方法

Vim默认的.*是贪婪匹配,会匹配到最远的目标关键词,可通过两种方式限制匹配范围:

1. 非贪婪匹配

用\{-}代替*实现非贪婪匹配,会匹配到最近的下一个目标关键词:

thu.\{-}thu

这个模式只会匹配从第一个thu到紧邻它的下一个thu的内容。

2. 精确指定匹配次数

通过分组计数精确匹配到第N个目标关键词,比如要匹配第1个到第3个thu,可写成:

thu\(.\{-}thu\)\{2}

其中\{2}表示前面的分组(.\{-}thu)仅匹配2次,整体就会锁定第1个到第3个thu的范围。

内容的提问来源于stack exchange,提问作者Harshil Gajjar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.15 05:36:06