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

Vim给斜杠间单词末尾加* 正则匹配无结果问题求解

问题原因

你写的Vim替换命令没有生效,主要有三个问题:

  1. Vim默认正则(magic模式)下,( )需要转义才会被识别为捕获组,你写的(.*?)会被识别为匹配字面量的括号字符,自然找不到匹配内容
  2. Vim默认正则不支持非贪婪匹配语法.*?,就算你转义了括号,也会出现匹配范围过长的问题
  3. 你的替换规则直接写成*,会把匹配到的「斜杠+中间内容+斜杠」整体替换成*,和你要给中间单词末尾加*的需求完全不符

正确替换命令

推荐使用very magic模式简化转义,命令如下:

:%s/\v\/([^\/]+)\//\/\1*\//g

如果你不想用very magic模式,也可以用默认模式的写法:

:%s/\/\([^\/]*\)\//\/\1*\//g

规则说明

  • 匹配逻辑:只匹配被两个斜杠前后包裹的内容,用[^\/]+匹配非斜杠的字符,精准取到两个斜杠中间的单词存入捕获组
  • 替换逻辑:保留前后的斜杠,输出捕获组的单词后追加*,正好符合你要的修改效果
  • 不会匹配只有单个斜杠的行(比如alpbeta/gamma),完全符合你的预期输出要求

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 10:36:03