Согласно документации фрагмента SublimeText , здесь используется регулярное выражение Boost , и оно поддерживает операторы изменения регистра в шаблонах замены .
Вы можете использовать следующее исправление:
${1:${TM_FILENAME/(.+)..+..+/\l$1/}}
^^
Оператор \l
переводит первый символ, стоящий справа от оператора, в нижний регистр.
Другие опции:
\l Causes the next character to be outputted, to be output in lower case.
\u Causes the next character to be outputted, to be output in upper case.
\L Causes all subsequent characters to be output in lower case, until a \E is found.
\U Causes all subsequent characters to be output in upper case, until a \E is found.
\E Terminates a \L or \U sequence.
Обратите внимание, что ваш шаблон выглядит не очень хорошо, поскольку он фиксирует 1 или более символов ((.+)
) вплоть до последних четырех (..+..+
соответствует последним 4 символам в строке из-за первого жадного шаблона). Это может не делать то, что вам нужно.
Если вы планируете захватить любой текст до последней точки, если она есть, используйте
${1:${TM_FILENAME/^(.*?)(\.[^.]*)?$/\l$1/}}
, где
^
- начало строки
(.*?)
- Группа 1 ($1
): любые 0+ символов, кроме символов разрыва строки, как можно меньше
(\.[^.]*)?
- Группа 2 (необязательно): a .
, а затем любые 0+ символов, кроме .
$
- конец строки.