VS Code片段正则如何将Elixir项目相对路径转为对应模块名
VS Code Elixir路径转模块名正则修改方案
你当前的正则缺失模块分隔点的核心原因是:匹配到路径分隔符/后的首字符时,仅输出了转大写的字符,没有提前补模块分隔符.。
最终可用正则
${RELATIVE_FILEPATH/^(lib\/|test\/)(\w)|(\.ex|\.exs)$|\/(\w)|_(\w)/${2:/upcase}${4:+.}${4:/upcase}${5:/upcase}/g}
替换逻辑验证
以你的示例路径lib/shop_web/live/product_live/index.ex为例:
- 匹配开头
lib/后的首字符s(捕获组2),输出大写S - 匹配
shop_web中_后的首字符w(捕获组5),输出大写W,得到ShopWeb - 匹配后续路径分隔符
/后的首字符l(捕获组4),先输出.再输出大写L,得到.Live - 重复上述规则,
/后的字符前补.、_后的字符直接转大写,.ex/.exs后缀匹配后直接丢弃 - 最终输出结果为
ShopWeb.Live.ProductLive.Index,完全符合Elixir模块命名规范,同时也兼容test目录下的测试文件命名转换。
内容的提问来源于stack exchange,提问作者William Fank Thomé
相关产品推荐
相关产品推荐

