regex - 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";
这样做的正确方法是什么?
解决方案
您可以使用
"import componet css": {
"prefix": "icss2",
"body": [
"import \"./${TM_FILENAME_BASE/^(.*)\\..*/$1/}.css\";"
],
"description": ""
}
该${TM_FILENAME_BASE}
变量包含不带路径的文件名,并且^(.*)\\..*
正则表达式匹配并捕获所有内容,.
同时仅匹配扩展名,并且由于$1
替换模式(即指第 1 组值)而仅保留捕获的部分。