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?

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.


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
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.