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.

Kann durchaus verwirrend sein: Der "Accent Circumflex" hat unterschiedliche Auswirkungen, je nachdem, wo er eingesetzt wird. In diesem Fall negiert er das Suchmuster.
Kann durchaus verwirrend sein: Der "Accent Circumflex" hat unterschiedliche Auswirkungen, je nachdem, wo er eingesetzt wird. In diesem Fall negiert er das Suchmuster.

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.