Простое регулярное выражение в файле Gruntfile - программирование
Подтвердить что ты не робот

Простое регулярное выражение в файле Gruntfile

У меня есть следующая строка в Gruntfile.

js files: ['<%= yeoman.app %>/scripts/{,*/}*.coffee'],

Может ли кто-нибудь быть таким добрым, как сказать мне, что означает {,*/}*? Я знаю, что он пытается сопоставить все файлы .coffee в папке скриптов, но я хочу знать, как это происходит.

4b9b3361

Ответ 1

{,*/} соответствует одному или нулю каталогов между скриптами и файлом. coffee. Внутри {} есть фактически два совпадающих слова, разделенных запятой. Один пуст, не обозначенный символами слева от запятой. Одним из них является любое количество символов и косая черта. Финал * соответствует имени файла перед расширением .coffee.

Кстати, это не регулярные выражения, а глобусы.

Ответ 2

Согласно документации:

Кроме того, поскольку это JavaScript, вы не ограничены JSON; вы можете используйте любой действующий JavaScript здесь. Вы даже можете программно генерировать при необходимости, конфигурации.

Похоже, что {,*/}* соответствует JSON для:

{
 '' = empty space matches no character
 , = or
 * = Any Characters (except slash) (wildcard)
 / = literal slash
}
* = Any Characters (except slash) (wildcard)

Обновить Найден другой ресурс:

Шаблоны глобусов

Часто нецелесообразно указывать все исходные файловые пути по отдельности, поэтому Grunt поддерживает расширение имени файла (также известное как globbing) через встроенные библиотеки node -glob и минимизации.

Хотя это не всеобъемлющий учебник по шаблонам глобусов, знаете что в пути к файлу:

* соответствует любому числу символов, но не /

? соответствует одному символу, но не /

** соответствует любому количеству символов, включая /, если это единственное в части пути

{} разрешает список разделенных запятыми "или" выражений

! в начале шаблона будет отменено совпадение