Я предлагаю использовать
${TM_FILEPATH/.*[\\/\\\\]([^\\/\\\\]+)[\\/\\\\]index\\.js$|.*[\\/\\\\](.*)/$1$2/}
Если вы не хотите включать расширение файла в вывод, используйте
${TM_FILEPATH/.*[\\/\\\\]([^\\/\\\\]+)[\\/\\\\]index\\.js$|.*[\\/\\\\](.*?)(?:\\.[^.]*)$/$1$2/}
Регулярное выражение # 1 будет работать , как показано здесь или регулярное выражение # 2 здесь , см. его график :
Смысл здесь в том, чтобы использовать две альтернативы, разделенные оператором чередования |
, который будет соответствовать всей строке , в то время как захватывает необходимых вам деталей, обеспечивая более конкретную (с альтернатива известного имени файла) стоит на первом месте, а более общий (который будет соответствовать любому имени файла) будет последним. Шаблон замены будет состоять из двух обратных ссылок, $1$2
, поскольку на самом деле только одна будет содержать некоторый текст после совпадения.
Regex details
Обратите внимание, что обратные слэши удваиваются, потому что шаблон передается как строковый литерал, и /
символы должны быть экранированы, потому что строковый литерал содержит "строковый" литерал регулярного выражения.
.*[\/\\]([^\/\\]+)[\/\\]index\.js$
:
.*
- любые 0+ символов, кроме символов разрыва строки, как можно больше
[\/\\]
- /
или \
([^\/\\]+)
- Захват группы 1: один или несколько (+
) символов, отличных от /
и \
([^...]
является отрицательным классом символов)
[\/\\]
- /
или \
index\.js
- index.js
подстрока
$
- конец строки
|
- или
.*[\/\\](.*)
:
.*
- любые 0+ символов, кроме символов разрыва строки, как можно больше
[\/\\]
- /
или \
(.*)
- Группа захвата 2: любые 0+ символов, кроме символов разрыва строки, как можно больше
(.*?)(?:\.[^.]*)?$
- захватит в Группу 2 любые 0 или более символов, кроме символов разрыва строки, как можно меньше, а затем попытается сопоставить необязательную последовательность из .
и 0+ не точечных символов до конец строки ($
).
Итак, полный фрагмент кода будет выглядеть как
{
"mySnippet": {
"prefix": "cls",
"body": [
"class ${TM_FILEPATH/.*[\\/\\\\]([^\\/\\\\]+)[\\/\\\\]index\\.js$|.*[\\/\\\\](.*?)(?:\\.[^.]*)$/$1$2/} {}",
"export default ${TM_FILEPATH/.*[\\/\\\\]([^\\/\\\\]+)[\\/\\\\]index\\.js$|.*[\\/\\\\](.*?)(?:\\.[^.]*)$/$1$2/};"
]
}
}
Не стесняйтесь настроить его так, как вы хотите.