首页 > 解决方案 > VSCode 片段中用于删除文件扩展名的正则表达式语句

问题描述

我想创建一个 VS-Code 片段,用于将 css 导入反应组件。如果我使用“MyComponent.tsx”中的片段,那么我希望片段导入组件的关联 css 文件:

import "./MyComponent.css";

组件和它的 css 将始终位于同一目录中。

我认为下面的代码片段可以做到这一点:

//typescriptreact.json
      "import componet css": {
        "prefix": "icss2",
        "body": [
          "import \"./${1:$TM_FILENAME/^(.+)(\.[^ .]+)?$/}.css\";"
        ],
        "description": ""
      },

但这会导致:

import "./MyComponent.tsx/^(.+)([^ .]+)?$/.css";

这样做的正确方法是什么?

标签: regexcode-snippetsvscode-snippets

解决方案


您可以使用

"import componet css": {
    "prefix": "icss2",
    "body": [
      "import \"./${TM_FILENAME_BASE/^(.*)\\..*/$1/}.css\";"
    ],
    "description": ""
}

${TM_FILENAME_BASE}变量包含不带路径的文件名,并且^(.*)\\..*正则表达式匹配并捕获所有内容,.同时仅匹配扩展名,并且由于$1替换模式(即指第 1 组值)而仅保留捕获的部分。


推荐阅读