Was ist das .gitignore-Muster-Äquivalent des regulären Ausdrucks (Groß | Klein) (Bundesland | Stadt) - [0-9] * \. Csv

22

Ich habe einen regulären Ausdruck, in den ich mich einfüge, .gitignoreähnlich wie:

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

Es hat nicht funktioniert, also habe ich es gegen RegexLab.NET getestet .

Ich fand dann die gitignore- Manpage, auf der ich erfuhr, dass gitignore keine regulären Ausdrücke verwendet, sondern fnmatch (3) .

Fnmatch scheint jedoch kein Äquivalent zu den Erfassungsgruppen zu haben. Ist das machbar oder muss ich das in drei Zeilen aufteilen?

Justin Dearing
quelle

Antworten:

26

Es gibt keine Möglichkeit, diesen regulären Ausdruck mit den von gitignore unterstützten Mustern auszudrücken. Das Problem ist nicht das Fehlen von Erfassungsgruppen (Sie verwenden eigentlich keine Erfassungsgruppen als solche), sondern das Fehlen eines |Operators. Sie müssen dies in vier Zeilen aufteilen.

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

Beachten Sie, dass die Muster z. B. übereinstimmen BigState-4foo.csv, da sie *mit einer beliebigen Folge von Zeichen übereinstimmen. Mit Glob-Mustern können Sie keine besseren Ergebnisse erzielen, es sei denn, Sie möchten nur eine feste Anzahl von Ziffern abgleichen.

Gilles 'SO - hör auf böse zu sein'
quelle
2
Ich habe genau das getan, was du gesagt hast. Auch danke für den Hinweis * wiederholt nicht den vorherigen Ausdruck, sondern ist eine Weile Karte. Es ist gut genug für meine Bedürfnisse, aber ich hatte auf Besseres gehofft.
Justin Dearing