Visual Studio 代码的这个链式代码段有什么问题?



我正在尝试制作一个代码片段来声明bemit组件,所以当我创建一个新的组件时,我只需要编写前缀"new-bemit-component"比如文件"_c- index "_表示部分元素,c-表示组件,然后是名称,代码片段将写成:

/* ========================================================================================= */
/* COMPONENT - C INDICE */
/* ========================================================================================= */
.c-indice{

}
/* ========================================================================================= */
/* END COMPONENT - C INDICE */
/* ========================================================================================= */

我完成了,代码片段写的是

/* =========================================================================================//COMPONENT - C index//========================================================================================= */

.c-indice {

}

/* =========================================================================================//END COMPONENT - C index//========================================================================================= */

使用

"body": [
"/* ========================================================================================= */",
"/* COMPONENT - C ${TM_FILENAME_BASE/_c-//} */",
"/* ========================================================================================= */",
"",
".${TM_FILENAME_BASE/[\\_]//}{",
"",
"}",
"",
"/* ========================================================================================= */",
"/* END COMPONENT - C ${TM_FILENAME_BASE/_c-//} */",
"/* ========================================================================================= */"
],

,但现在我试图链接另一个正则表达式,所以结果以大写结束,使用这个

"body": [
"/* ========================================================================================= */",
"/* COMPONENT - C ${TM_FILENAME_BASE/(_c-)(\(?!_\wb)b\w+)/${1:+ }/g ${2:/capitalize/}} */",
"/* ========================================================================================= */",
"",
".${TM_FILENAME_BASE/[\\_]//}{",
"",
"}",
"",
"/* ========================================================================================= */",
"/* END COMPONENT - C ${TM_FILENAME_BASE/_c-//} */",
"/* ========================================================================================= */"
],

就像他们在这里做的一样,VSCode在代码片段中链接正则表达式转换

但是一定是正则表达式有问题,我得到这个:

/* ========================================================================================= */
/* COMPONENT - C ${TM_FILENAME_BASE/(_c-)((?!_w)w+)/+ /g /capitalize/} */
/* ========================================================================================= */
.c-indice{
}
/* ========================================================================================= */
/* END COMPONENT - C indice */
/* ========================================================================================= */

我用https://regex101.com

测试正则表达式

您只需要捕获_c-之后的部分并将其大写:

${TM_FILENAME_BASE/_c-(.*)/${1:/upcase}/}

TM_FILENAME_BASE变量中的_c-将被匹配,其余的将被捕获到组1中。

然后,所有匹配的文本将被替换(一次,没有g标志),第1组的内容将用upcase变成大写。