Jaki jest odpowiednik wzorca .gitignore wyrażenia regularnego (Big | Small) (State | City) - [0-9] * \. Csv

23

Mam wyrażenie regularne, które utknąłem w moim .gitignorepodobnym do:

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

Nie działało, więc przetestowałem go na RegexLab.NET .

Następnie znalazłem stronę podręcznika gitignore, która doprowadziła mnie do wniosku, że gitignore nie używa wyrażeń regularnych, a raczej fnmatch (3) .

Jednak fnmatch nie wydaje się mieć odpowiednika grup przechwytywania. Czy to jest wykonalne, czy muszę rozbić to na trzy linie?

Justin Dearing
źródło

Odpowiedzi:

26

Nie ma możliwości wyrażenia tego wyrażenia regularnego za pomocą wzorców obsługiwanych przez gitignore. Problemem nie jest brak grup przechwytywania (w rzeczywistości nie używasz grup przechwytywania jako takich), problemem jest brak |operatora. Musisz rozbić to na cztery linie.

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

Zauważ, że wzory pasują np. BigState-4foo.csv, Ponieważ *pasują do dowolnej sekwencji znaków. Nie możesz zrobić nic lepszego z wzorcami globów, chyba że chcesz dopasować tylko określoną liczbę cyfr.

Gilles „SO- przestań być zły”
źródło
2
Skończyłem robić dokładnie to, co powiedziałeś. Również dzięki za wskazanie * nie powtarza poprzedniego wyrażenia, ale jest kartą chwilową. Jest wystarczająco dobry dla moich potrzeb, ale liczyłem na coś lepszego.
Justin Dearing