Обе эти работы:
"import { ${TM_FILENAME/^([^.]+).*/${1:/pascalcase}/}Component } from './${TM_FILENAME/^([^.]+).*/$1/}.component';",
"import { ${TM_FILENAME/(.*?)\\..+/${1:/pascalcase}/}Component } from './${TM_FILENAME/(.*?)\\..+/$1/}.component';"
С помощью сниппета vscode, если вы хотите исключить часть переменной, как вы хотите, удалив .component.js
из имени файла,тогда эта часть переменной должна быть учтена в регулярном выражении - следовательно, (.*?)\\..+
.
В противном случае эта "невидимая" часть переменной просто проходит.
Таким образом, ваше регулярное выражение ^([^.]+)
точно захватывало часть имени файла перед первым .
, но затем оставшаяся часть переменной «проходила» без изменений.
Вы можете видеть этоболее ясно с этим примером:
"import { ${TM_FILENAME//${1:/pascalcase}/}Component }
, что дает:
import { fun-thing.component.jsComponent }
, поэтому передается все имя файла, хотя ни одно из них не захвачено.
${someVariable/everything To Be Transformed/what To Do To the previous/}
если это не входит во все, что должно быть преобразовано, то ничего не происходит с ним.