Windows-Praxis

Workshop: In der PowerShell mit regulären Ausdrücken arbeiten

Beispiele für Vergleiche und Treffer

Das Vorhergehende mag nun ein wenig verwirrend erscheinen, deshalb ist es am besten, diese "Treffer" einmal selbst anhand der folgenden Beispiele auszuprobieren. So kann es durchaus nicht im Sinne des Anwenders sein, dass der Vergleich sofort nach dem ersten Treffer stoppt. Dieses Verhalten kann folgendermaßen geändert werden:

PS C:\> $Eingabe=‘Tec789Channel‘

PS C:\> $Eingabe -match "\w+"

True

PS C:\ $matches

Name Value

0 Tec789Channel

Geht es darum, auf Zahlen zu vergleichen, so hilft folgender Aufruf:

PS C:\> $Eingabe -match "\d"

True

PS C:\ $matches

Name Value

0 7

Auch hier stoppt der Vergleich nach der ersten Zahl und kann entsprechend erweitert werden:

PS C:\> $Eingabe -match "\d+"

True

PS C:\ $matches

Name Value

0 789

Mithilfe der geschweiften Klammern kann hier auch eine Anzahl von Zeichen festgelegt werden, die in der Zeichenkette zu finden sein soll. Dabei gilt grundsätzlich, dass ein solcher Aufruf in der Form {Anzahl der minimal vorhandenen Zeichen, Anzahl der maximal vorhandenen Zeichen} erfolgt. Befindet sich nur eine Zahl zwischen den geschweiften Klammern, so prüft die PowerShell, ob mindestens die Anzahl dieser Zeichen vorhanden ist. Der folgende Aufruf zeigt dies:

PS C:\> $Eingabe -match "\d{2}"

True

PS C:\ $matches

Name Value

0 78

während dieser Aufruf:

PS C:\> $Eingabe -match "\d{2,3}"

True

PS C:\ $matches

Name Value

0 789

als "wahr" angezeigt wird, wenn mindestens zwei und höchstens drei Ziffern in der Zeichenfolge zu finden sind. Zusammen mit den Zeichen, die einen String am Anfang (^) und am Ende ($) vergleichen, kann hier auch gleich ein praxisnäheres Beispiel gezeigt werden, nämlich die Abfrage eines Eingabe-Strings:

PS C:\> $Eingabe=Read-Host "Bitte drei Ziffern gefolgt von mindestens vier, aber nicht mehr als acht Buchstaben eingeben!"

Wenn nun eine Eingabe in diese Variable erfolgt ist, kann sie dann beispielsweise mit folgendem regulären Ausdruck auf ihre Richtigkeit überprüft werden:

PS C:\ > $Eingabe -match "^\d{3}\w{4,8}$"

Wenn Ihnen das immer noch ein wenig kryptisch erscheint, dann probieren Sie es einfach aus. Diese Art der Abfrage ist wohl nicht für ein sicheres Passwort geeignet, kann aber gut zum Verhindern von falschen Eingaben in Shell-Skripten zum Einsatz kommen.