【发布时间】:2013-09-09 21:15:55
【问题描述】:
我现在在这个 Sublime Snippet 上卡住了一段时间。
我想在创建新类时显示正确的包名称,使用TM_FILEPATH 和TM_FILENAME。
当打印TM_FILEPATH 变量时,我得到如下信息:
/Users/caubry/d/[...]/src/com/[...]/folder/MyClass.as
我想转换这个输出,所以我可以得到类似的东西:
com.[...].folder
这包括:
- 删除
/com/[...]/folder/MyClass.as之前的所有内容; - 删除 TM_FILENAME 及其扩展名;在这个例子中
MyClass.as; - 最后找到所有的斜线并用点替换它们。
到目前为止,这就是我所拥有的:
${1:${TM_FILEPATH/.+(?:src\/)(.+)\.\w+/\l$1/}}
然后显示:
com/[...]/folder/MyClass
我确实了解如何用点替换飞溅,例如:
${1:${TM_FILEPATH/\//./g/}}
但是,我很难将此逻辑添加到前一个逻辑,以及删除逻辑末尾的 TM_FILENAME。
我对正则表达式真的很缺乏经验,在此先感谢。
:]
编辑: [...] 表示可变数量的文件夹。
【问题讨论】:
-
[...]是否真的在你的字符串中,或者你是说你的字符串中有不同数量的实际文件夹? -
你能保证文件总是有一个文件扩展名(因此包含一个句点)吗?在这种情况下,我可以想出一个丑陋但有效的单正则表达式解决方案。否则,这将是艰难的。
-
我可以假设该文件将始终使用扩展名,因为我只会将 sn-p 用于 AS3 类。
标签: regex sublimetext2 sublimetext