【问题标题】:Snippets VS Code Regex片段 VS 代码正则表达式
【发布时间】:2021-07-12 09:49:10
【问题描述】:

我需要你的帮助,我正在构建一个 sn-ps,但我需要转换文件的路径:

D:\Project\test\src\EnsLib\File\aaa\bbb

我需要它是这样的:

EnsLib\File\aaa\bbb

让我从“SRC”向前,用点替换\。

Example: D:\Project\test\src\EnsLib\File\aaa\bbb

Result: EnsLib.File.aaa.bbb

始终在 src 文件夹之后是起点

我的测试正则表达式如下:

"${TM_DIRECTORY/(.*\\\\{4})/$1/}",
"${TM_DIRECTORY/.*src\\\\(.*)\\\\(.*)$/.$2/}.${TM_FILENAME_BASE}",
// "${TM_DIRECTORY/.*\\\\(.*)\\\\(.*)$/$1.$2/}.${TM_FILENAME_BASE}",
// "${RELATIVE_FILEPATH/\\D{4}(\\W)\\..+$/$1/g}",
// "${TM_DIRECTORY/(.*src\\\\)//g}.${TM_FILENAME_BASE}",
// "${RELATIVE_FILEPATH/(\\D{3})\\W|(\\..+$)/$1.$2/g}",
// "${RELATIVE_FILEPATH/\\W/./g}",

【问题讨论】:

  • 你想说bbb是这里的文件名吗?好吧,试试"${TM_FILEPATH/^.*?\\\\src\\\\|(\\\\)/${1:+.}/g}"
  • 谢谢。但 bbb 是一个文件夹。我只需要文件夹。如果你能帮助我,我将不胜感激
  • 啊哈,试试"${TM_DIRECTORY/^.*?\\\\src\\\\|(\\\\)/${1:+.}/g}"

标签: regex visual-studio-code code-snippets


【解决方案1】:

看来你想要

"${TM_DIRECTORY/^.*?\\\\src\\\\|(\\\\)/${1:+.}/g}"

正则表达式是^.*?\\src\\|(\\),它匹配

  • ^ - 字符串开头
  • .*? - 除换行符以外的任何零个或多个字符,尽可能少
  • \\src\\ - \src\ 字符串
  • | - 或
  • (\\) - 第 1 组 ($1):\ 字符。

如果第 1 组匹配,则替换为 .,否则,替换为空字符串,即从字符串开头到 \src\ 的文本被简单地删除。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-11-07
    • 2021-02-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多