给定以下文件路径:
/Users/Lawrence/MyProject/some/very/interesting/Code.scala
我想使用单个正则表达式替换生成以下内容(根可以是常量):
some.very.interesting
这是为了生成 Sublime Text 的代码片段,它可以自动为我的 scala/java 类插入正确的包/命名空间 header :)
Sublime Text 使用以下语法作为正则表达式替换模式(也称为“替换”):
{input/regex/replace/flags}
因此,为什么不能采用迭代方法 - 它必须一次性完成!另外,替换不能嵌套:(
最佳答案
如果您知道嵌套文件夹的最大数量。您可以在正则表达式中指定。
适用于 1 到 3 个嵌套文件夹
正则表达式:/Users/Lawrence/MyProject/(\w+)/?(\w+)?/?(\w+)?/[^/]+$
替换:$1.$2.$3
适用于 1 到 5 个嵌套文件夹
正则表达式:/Users/Lawrence/MyProject/(\w+)/?(\w+)?/?(\w+)?/?(\w+)?/?(\w+)?/[^/]+$
替换:$1.$2.$3.$4.$5
考虑到限制,这是你唯一能做的事情
关于用于将文件路径转换为包/命名空间的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16076193/