Windows-Praxis
Workshop: In der PowerShell mit regulären Ausdrücken arbeiten
Metazeichen und ihre unterschiedliche Bedeutung
Wie bereits eingangs erwähnt, schrecken viele Anwender und auch System-Profis vor dem Einsatz der regulären Ausdrücke zurück, da sie deren Syntax als zu kryptisch und unübersichtlich ansehen.
Ein Punkt, der sicherlich entscheidend zu dieser weit verbreiteten Einschätzung beigetragen hat, ist die Tatsache, dass einige der Metazeichen durchaus unterschiedliche Bedeutung haben können, je nachdem, wo sie zum Einsatz kommen.
So haben wir in diesem Beitrag bereits das Metazeichen "^" (accent circumflex) vorgestellt, das es erlaubt, die Übereinstimmungen am Anfang einer Zeichenfolge zu finden. Kommt es allerdings innerhalb der eckigen Klammern zum Einsatz, so negiert es das darin formulierte Suchmuster. So findet der folgende Aufruf:
PS c:\ > $Eingabe=‘TecChannel678 Rulez‘
PS c:\> $Eingabe -match "[^a-z]"
True
PS c:\> $matches
Name Value
0 6
die Zeichen, die keine (!) Buchstaben sind - der Vergleich stoppt dementsprechend bei der Ziffer "6". Sollen alle zusammenhängenden Ziffern in dieser Zeichenkette gefunden werden, so würde das durch den folgenden Aufruf erledigt:
PS c:\> $Eingabe -match "[^a-z]+"
True
PS c:\> $matches
Name Value
0 678
Wird ein solcher Aufruf mit der Case-sensitiven Variante des -match-Operators in der folgenden Form gestartet:
PS c:\> $Eingabe -cmatch "[^a-z]"
True
PS c:\> $matches
Name Value
0 T
so stoppt der Vergleich schon beim ersten groß geschriebenen "T", da es nicht in den Bereich "a-z" hineinfällt und diese Bedingung somit zutrifft.