Что такое шаблонный образец .gitignore для регулярного выражения (Big | Small) (State | City) - [0-9] * \. Csv

23

У меня есть регулярное выражение, которое я вставил в мой .gitignoreаналог:

(Big|Small)(State|City)-[0-9]*\.csv

Это не сработало, поэтому я протестировал его на RegexLab.NET .

Затем я нашел страницу справочника gitignore, из-за которой я узнал, что gitignore использует не регулярные выражения, а fnmatch (3) .

Однако, fnmatch, похоже, не имеет эквивалента групп захвата. Это возможно или мне нужно разбить это на три строки?

Джастин Даринг
источник

Ответы:

26

Нет никакого способа выразить это регулярное выражение с помощью шаблонов, которые поддерживает gitignore. Проблема не в отсутствии групп захвата (на самом деле вы не используете группы захвата как таковые), проблема в отсутствии |оператора. Вы должны разбить это на четыре строки.

BigState-[0-9]*.csv
SmallState-[0-9]*.csv
BigCity-[0-9]*.csv
SmallCity-[0-9]*.csv

Обратите внимание, что шаблоны соответствуют, например BigState-4foo.csv, так как *соответствуют любой последовательности символов. Вы не можете добиться большего успеха, чем это с шаблонами глобуса, если вы не хотите соответствовать только фиксированному числу цифр.

Жиль "ТАК - перестань быть злым"
источник
2
Я сделал именно то, что вы сказали. Кроме того, спасибо за указание * не повторяет предыдущее выражение, но является картой времени. Это достаточно хорошо для моих нужд, но я надеялся на лучшее.
Джастин Дирринг