Qual é o equivalente ao padrão .gitignore da regex (Big | Small) (State | City) - [0-9] * \. csv

18

Eu tenho um regex Eu fiquei no meu .gitignore semelhante a:

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

Não funcionou, então testei com RegexLab.NET .

Encontrei então a página de manual gitignore que me levou a descobrir que o gitignore não usa regexes, mas em vez fnmatch (3) .

No entanto, fnmatch não parece ter um equivalente dos grupos de captura. Isso é viável ou preciso dividi-lo em três linhas?

    
por Justin Dearing 15.02.2012 / 21:24

1 resposta

24

Não há como expressar essa expressão regular com os padrões que o gitignore suporta. O problema não é a falta de grupos de captura (na verdade, você não está usando grupos de captura como tal), o problema é a falta de um operador | . Você precisa dividir isso em quatro linhas.

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

Observe que os padrões correspondem, por exemplo, BigState-4foo.csv , pois * corresponde a qualquer sequência de caracteres. Você não pode fazer melhor do que isso com padrões glob, a menos que esteja disposto a corresponder apenas a um número fixo de dígitos.

    
por 16.02.2012 / 02:38