首页 > 解决方案 > 相对路径的 VS 代码片段正则表达式

问题描述

我正在使用 VS Code 在 Elixir/Phoenix Framework 中进行编码并尝试转换以下相对路径

lib/shop_web/live/product_live/index.ex

进入

ShopWeb.Live.ProductLive.Index

使用片段。

最接近的是下面的正则表达式

"${RELATIVE_FILEPATH/^(lib\\/|test\\/)(\\w)|(.ex|.exs)$|\\/(\\w)|_(\\w)/${2:/upcase}${4:/upcase}${5:/upcase}/g}"

谁给了我以下输出

ShopWebLiveProductLiveIndex

我找不到插入缺失点的方法。

谁能帮我?

提前致谢!

标签: regexvisual-studio-codeelixircode-snippetsphoenix

解决方案


尝试这个:

"test7": {
  "prefix": "al",
  "body": [
    // my version
    "${RELATIVE_FILEPATH/^([^\\/\\\\]+[\\/\\\\])|(\\.ex|\\.exs)$|([^._\\/\\\\]+)|_|([\\/\\\\])/${3:/capitalize}${4:+.}/g}",

    // your version tweaked
    "${RELATIVE_FILEPATH/^(lib[\\/\\\\]|test[\\/\\\\])(\\w)|(\\.ex|\\.exs)$|([\\/\\\\])(\\w)|_(\\w)/${2:/upcase}${4:+.}${5:/upcase}${6:/upcase}/g}",
  ],
  "description": "alert line"
}

[注意:我为 path.separators/\. 如果您不需要,您可以将代码段缩短很多。]

你的版本非常接近。我将其更改为\\.ex只是为了使点明确。

我还在第 5 个捕获组([\\/\\\\])之前添加了第 4 个捕获组,如 ([\\/\\\\])(\\w).

现在可以在条件中使用第 4 组来在路径分隔符所在的位置${4:+.}添加's。.

我的版本有点短——它匹配但不使用任何目录,无论是它lib还是test其他。如果这对您不起作用,则很容易修改正则表达式的那部分。我将其缩短为 4 个捕获组。

([^._\\/\\\\]+)|_|([\\/\\\\])我的版本结束:

([^._\\/\\\\]+)._\/: 匹配除,以外的字符
_: 匹配但我们没有使用它,所以不需要捕获组,或者
([\\/\\\\]): 仅匹配组 4 中的路径分隔符以在条件中使用。

${4:+.}: 有条件的,如果有组 4(路径分隔符)添加..


推荐阅读