мое имя файла
some-fancy-ui.component.html
Я хочу использовать фрагмент vscode, чтобы преобразовать его в
SOME_FANCY_UI
Так что в основном
В настоящее время у меня есть
'${TM_FILENAME/(.)(-)(.)/${1:/upcase}${2:/_}${3:/upcase}/g}'
что дает мне это
'SETUP-PRINTER-SERVER-LIST.COMPONENT.HTML'
Документы не объясняют, как применять замену в сочетании с их преобразованиями в группах регулярных выражений.





Если фрагменты, которые вам нужно поднять, разделены - или ., вы можете использовать
"Filename to UPPER_SNAKE_CASE": {
"prefix": "usc_",
"body": [
"${TM_FILENAME/\\.component\\.html$|(^|[-.])([^-.]+)/${1:+_}${2:/upcase}/g}"
],
"description": "Convert filename to UPPER_SNAKE_CASE dropping .component.html at the end"
}
Вы можете проверить файл регулярное выражение работает здесь.
\.component\.html$ — соответствует .component.html в конце строки| - или(^|[-.]) захватить начало строки или - / . в группу 1([^-.]+) захватите любые символы 1+, кроме - и ., в группу 2.Замена ${1:+_}${2:/upcase} означает:
${1:+ - если Группа 1 не пуста,_ - заменить на _} - конец обработки первой группы${2:/upcase} - вернуть увеличенное значение группы 2.Вот довольно простое регулярное выражение чередования:
"upcaseSnake": {
"prefix": "rf1",
"body": [
"${TM_FILENAME_BASE/(\\..*)|(-)|(.)/${2:+_}${3:/upcase}/g}",
"${TM_FILENAME/(\\..*)|(-)|(.)/${2:+_}${3:/upcase}/g}"
],
"description": "upcase and snake the filename"
},
Любая версия работает.
(\\..*)|(-)|(.) чередование трех групп захвата концептуально просто. Порядок групп — важный, и именно он делает регулярное выражение таким простым.
(\\..*) все, что находится после первой точки . в имени файла, входит в группу 1, которая не будет использоваться при преобразовании.
(-) группа 2, если есть группа 2, замените ее символом подчеркивания ${2:+_}.
(.) группа 3, все остальные символы переходят в группу 3, которая будет иметь верхний регистр ${3:/upcase}.