Я хочу заменить путь к файлу задачей gulp. Для этого мне нужно написать Regex:
У меня есть структура папок ../assets/js/components/main/main.component.html
, где мне нужно заменить весь путь, ../assets/js/components/**/
, с пустой строкой. Поэтому после применения Regex в моем примере я должен получить только файл html, например: main.component.html
Regex должен соответствовать только пути ../assets/js/components/
с одним уровнем подпапки, например: ../assets/js/components/**/
. Путь с только ../assets/js/components/
не должен совпадать и путь с несколькими подпапками ни ../assets/js/components/main/shouldnotmatch/
Я написал уже одно Regex:
^..\/assets\/js\/components\/(?:\[^\/\]+\/?)*$
Проблема здесь в том, что Он выбирает все. Любая идея, как это исправить?
РЕДАКТИРОВАТЬ:
Дополнительные примеры:
../assets/js/components/main/=>../assets/js/components/main/../assets/js/components/=> should not match../assets/js/components/test/index.html =>../assets/js/components/test/../assets/js/components/main/shouldnotmatch/shouldnotmatch.html =>../assets/js/components/main/../assets/js/components/some_components.html => should not match../assets/js/components/1.html => should not match
Кажется, вы хотите избежать сопоставления файлов HMTL/HTM при использовании в месте subfolder
.
Вы можете использовать lookahead, чтобы добавить это ограничение и использовать
^\.\.\/assets\/js\/components\/(?![^\/]+\.html?$)[^\/]+\/?
подробности
^
- начало строки\.\.
- 2 точки\/assets\/js\/components\/
- буквальная строка /assets/js/components/
(?![^\/]+\.html?$)
- сразу слева от текущего местоположения не может быть: [^\/]+
- 1 или более символов, кроме /
\.html?
- .html
или htm
$
- в конце строки[^\/]+
- 1 или более символов, кроме /
\/?
- 1 или 0 /
с
.
^\.\.\/assets\/js\/components\/([^\/]+\/?)$
И убедиться, что вы ссылаетесь на значение группы 1 внутри кода. Обратите внимание, что в вашей демонстрации вы должны поместить\n
в[^\/]
чтобы избежать совпадения между строками. Смотрите regex101.com/r/PbCnXa/1