Извлечение сегмента из переменной пути VS Code

Я пытаюсь написать преобразование переменной фрагмента, которое выберет определенный сегмент из пути, указанного TM_FILEPATH.

TM_FILEPATH: ~/Projects/folder/Dir/tests/Unit/FooTest.php

Мне нужно взять Dir. Я пытаюсь использовать следующее регулярное выражение: \/([^\/]*)\/tests.

Преобразование фрагмента кода VS:

${TM_FILEPATH/\\/([^\\/]*)\\/tests/$1/}

Фактический выход:

~/Projects/folderDir/Unit/FooTest.php

Кажется, что преобразование сбрасывает значение полного совпадения, а не заменяет переменную первой совпадающей группой, что мне и нужно.


person jdp    schedule 26.08.2019    source источник


Ответы (1)


Пытаться:

"${TM_FILEPATH/.*\\/([^\\/]*)\\/tests.*/$1/}",

Все, что я сделал, это добавил .* до и после вашего регулярного выражения.

КЛЮЧЕВЫЙ МОМЕНТ: для преобразований фрагментов, если часть переменной не включена в часть, которая должна быть преобразована, она не будет преобразована, и поэтому будет получен окончательный результат.

${TM_FILEPATH/...part to be transformed.../$1/}

Итак, ваше регулярное выражение было хорошим, просто большая часть переменной не была «сигнализирована» о преобразовании, и поэтому не была.

person Mark    schedule 26.08.2019