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

Sublime Text 3代码片段获取文件父文件夹名问题求助

解决Sublime Text 3代码片段提取父文件夹名的问题

我来帮你理清这个问题——你遇到的核心问题是正则替换逻辑没匹配Sublime Text的变量替换规则,加上捕获组的使用有误。

你的问题根源

你写的正则([^/]+)(?:/[^/]+)$确实能匹配路径的最后两段(比如Page/index.js),并把Page放到捕获组1里,但你在替换时用了$2——可你的正则根本没有第二个捕获组啊!

Sublime Text的变量替换逻辑是:对整个TM_FILEPATH字符串(完整文件路径)执行正则替换,把匹配到的部分替换成你指定的内容。你用$2的话,因为不存在这个捕获组,相当于把匹配到的Page/index.js替换成了空字符串,剩下的自然就是前面的/Users/user/src/了。

正确的解决方案

我们需要调整正则,让它匹配整个文件路径,同时精准捕获父文件夹名,然后把整个路径替换成捕获到的内容。

下面是可以直接用的代码片段:

<snippet>
    <content><![CDATA[${TM_FILEPATH/.*\/([^\/]+)\/[^\/]+$/$1/}]]></content>
    <description>Insert parent folder name of current file</description>
    <tabTrigger>parentfolder</tabTrigger>
</snippet>

正则解释

让我们拆解一下这个正则.*\/([^\/]+)\/[^\/]+$:

  • .*\/:匹配从路径开头到父文件夹前最后一个斜杠的所有内容(比如/Users/user/src/)
  • ([^\/]+):这是我们要的捕获组1,匹配父文件夹名(任何不包含斜杠的字符,也就是Page)
  • \/[^\/]+$:匹配父文件夹后面的斜杠,以及最后的文件名(比如/index.js)

替换成$1后,整个完整路径就会被替换成捕获组1里的父文件夹名,完美得到你想要的结果。

测试验证

对于路径/Users/user/src/Page/index.js,这个正则会匹配整个字符串,捕获组1的值是Page,最终输出就是Page,完全符合你的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 07:49:17