Есть ли разница между этими двумя паттернами глобуса? - PullRequest
0 голосов
/ 14 февраля 2019
images/**/*.{png,svg}
images/**/*.+(png|svg)

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

1 Ответ

0 голосов
/ 21 марта 2019

Они не абсолютно одинаковы, и оба они потенциально могут дать разные результаты - обратитесь к glob primer для получения дополнительной информации.В нем говорится:

+(pattern|pattern|pattern) Соответствует одному или нескольким экземплярам предоставленных шаблонов.

Ваш второй шаблон;images/**/*.+(png|svg), будет соответствовать одному или нескольким вхождениям из png или svg в конце имени файла.

Впрочем, ваш первый паттерн;images/**/*.{png,svg}, будет соответствовать только при наличии одного вхождения из png или svg в конце имени файла.

Пример:

Допустим, у нас есть четыре файла с именем:

  • foo.svg
  • foo.svgsvg
  • foo.png
  • foo.pngpngpng

и их пути:

.
├── images
│   ├── ...
│   └── quux
│       ├── foo.svg
│       ├── foo.svgsvg
│       ├── foo.png
│       └── foo.pngpngpng

Сопоставленные результаты

Учитывая ваши два примера шаблонов -ваш первый образец;images/**/*.{png,svg}, будет соответствовать только следующим двум путям:

  • images/quux/foo.svg
  • images/quux/foo.png

Примечание: пути кфайлы foo.svgsvg и foo.pngpngpng были проигнорированы

Однако ваш второй шаблон;images/**/*.+(png|svg) будет соответствовать всем четырем путям к файлам, а именно:

  • images/quux/foo.svg
  • images/quux/foo.svgsvg
  • images/quux/foo.png
  • images/quux/foo.pngpngpng

"Когда я проверяю их, они обычно дают одинаковый результат."

Это потому, что маловероятно, что у вас когда-либо былфайл с расширением, например .pngpng или .svgsvgsvg (т. е. когда он имеет более одного вхождения png или svg в конце).Также маловероятно, что вы когда-либо это сделаете.

Однако я рекомендую вам использовать первый шаблон глобуса, то есть images/**/*.{png,svg}, поскольку он более лаконичен тому, что вы на самом деле хотите сопоставить.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...