Що таке .gitignore шаблону, еквівалентного регулярному вираженню (Big | Small) (Штат | Місто) - [0-9] * \. Csv


23

У мене є регулярний вираз, який я застряг у своєму .gitignoreподібному:

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

Це не спрацювало, тому я перевірив його на RegexLab.NET .

Потім я знайшов сторінку gitignore man, яка привела мене до того, що я дізнався, що gitignore не використовує регулярні вирази, а скоріше fnmatch (3) .

Однак, мабуть, він не має еквіваленту груп захоплення. Це здійсненно чи мені потрібно розбити це на три рядки?

Відповіді:


26

Немає способу висловити цей регулярний вираз візерунками, які підтримує gitignore. Проблема полягає не у відсутності груп захоплення (насправді ви не використовуєте групи захоплення як такі), проблема - відсутність |оператора. Це потрібно розбити на чотири рядки.

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

Зауважте, що шаблони відповідають, наприклад BigState-4foo.csv, оскільки *відповідають будь-якій послідовності символів. З глобальними візерунками ви не можете зробити краще, ніж це, якщо ви не готові відповідати лише фіксованій кількості цифр.


2
Я закінчив робити саме те, що ви сказали. Також спасибі за вказівку * не повторює попередній вираз, але є карткою часу. Його достатньо для моїх потреб, але я сподівався на краще.
Джастін Шановний,
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.