Neue Muster mit Moskito GIS

Moskito verwendet an vielen Stellen reguläre Ausdrücke. Zwei Hauptverwendungen sind Dateimasken und Textfilter.

Im heutigen ersten Teil komme ich auf die Dateimasken, deren bisherige Grenzen und neue Erweiterungen zu sprechen. Man verwendet sie in Datei laden und beim Aufzählen von Dateien. Auf Programmierebene ist das die Funktion enumFiles.

Für die anschließenden Beispiele liegen in dem Verzeichnis c:\temp\RegEx drei Dateien:

Diese lasse ich mir auflisten:

enumFiles c:\Temp\RegEx\*

c:\Temp\RegEx\AccessDB.cmd
c:\Temp\RegEx\AccessDB.mdb
c:\Temp\RegEx\AccessDB.s3db

Ich kann mir auch eine einzelne Datei auflisten lassen:

enumFiles c:\Temp\RegEx\* *.s3db

c:\Temp\RegEx\AccessDB.s3db

Aber wie kann ich die beiden Datenbanken ohne die Kommandodatei auflisten?
In diesem Spezialfall geht es (recht unelegant) mit

enumFiles c:\Temp\RegEx\* *.[sm]*

c:\Temp\RegEx\AccessDB.mdb
c:\Temp\RegEx\AccessDB.s3db

Nur schön ist das nicht und vor allem geht es schief, wenn noch eine *.mde mit im Verzeichnis liegt.

Dafür schalte ich dann von den bisher verwendeten Dateimasken auf „echte“ reguläre Ausdrücke um:

enumFiles c:\Temp\RegEx\* ".*" /REGEX

c:\Temp\RegEx\AccessDB.cmd
c:\Temp\RegEx\AccessDB.mdb
c:\Temp\RegEx\AccessDB.s3db

Der Schalter /REGEX erledigt diese Umschaltung. Jetzt sagt die Maske „.*“, dass ein beliebiges Zeichen (.) mehrfach vorkommen darf. Um den Ausdruck von eben zu formulieren muss also folgendes herhalten:

enumFiles c:\Temp\RegEx\* ".*\.[sm].*" /REGEX

c:\Temp\RegEx\AccessDB.mdb
c:\Temp\RegEx\AccessDB.s3db

Die einzelnen Teile des regulären Ausdrucks bedeuten
.*            Irgendwelche Zeichen
\.            Das Zeichen .
[sm]      Ein ‚s‘ oder ein ‚m‘
.*            weitere beliebige Zeichen
Jetzt geht aber die Auswahl zweier Muster einfacher, denn es gibt die Klammern () zum Wählen von Alternativen:

enumFiles c:\Temp\RegEx\* ".*\.(s3db|mdb)" /REGEX

c:\Temp\RegEx\AccessDB.mdb
c:\Temp\RegEx\AccessDB.s3db

Details erläutern viele Artikel im Netz, z.B.:

https://de.wikipedia.org/wiki/Regulärer_Ausdruck

http://regexe.de/

An einem der nächsten Donnerstage kommt dann als zweiter Teil das Verwenden von regulären Ausdrücken beim Vergleichen von Texten und beim Durchsuchen von Dateien.

Newsarchiv