Netz-Weise Logo

Weisheiten - der Netz-Weise Blog

Hier finden Sie Tipps und Tricks für vor, während und nach der Schulung.
1 Minuten Lesezeit (267 Worte)

Text für reguläre Ausdrücke vorbereiten - Spezialzeichen ersetzen

Regular Expressions

Reguläre Ausdrücke sind in allen Programmier-Sprachen ein mächtiges Werkzeug, um Texte zu analysieren und aufzubrechen. In Powershell steht einem hierfür unter anderem der Vergleichsoperator -match zur Verfügung. Reguläre Ausdrücke reichen dabei von sehr einfach bis sehr kompliziert. Das folgende Beispiel fällt z.B. in die erste Kategorie:

'C:\windows\system32' -match 'windows' 

Das Codebeispiel prüft, ob in dem linken Ausdruck 'C:\windows\system32' der Suchbegriff 'windows' auftaucht. Reguläre Ausdrücke können aber auch Textmuster beschreiben und verwenden dafür spezielle Platzhalter wie \d, \w oder . (also das Punktsymbol). \w steht dabei für ein "word", also einen Buchstaben, \d für eine digit (Ziffer) und . ist ein beliebiges Zeichen und hat die gleiche Bedeutung wie das * in sogenannten Globs oder global expressions. Dumm nur, wenn im Suchbegriff ein . oder das \-Symbol vorkommt, denn dann bekommt das Suchmuster plötzlich eine ganz andere Bedeutung:

'C:\windows\system32' -match '\windows' 

In diesem Beispiel sucht der reguläre Ausdruck nicht mehr nach \windows, sondern nach einem beliebigen Buchstaben, gefolgt von indows - \w ist ja der Platzhalter für einen beliebigen Buchstaben. Natürlich gibt es für dieses Problem eine Lösung - man muss den "\" doppelt angeben, um einen "\" zu erhalten: \\windows im regulären Ausdruck wird also zu \windows im Suchtext. Diesem Phänomen begegnet man oft in Skripten, in denen Pfade dann plötzlich in diesem komischen Format auftauchen: C:\\Windows\\System32. 

Wenn man nach einem spezifischen Text suchen möchte, der besondere Symbole (Zeichen) in regulären Ausdrücken enthält, kann man sich vom .Net Framework helfen lassen, denn die Klasse [RegEx] enthält eine Methode, die automatisch alle Sonderzeichen ersetzt.

[Regex]::Escape('C:\Windows\System32\') 

Das Codebeispiel gibt den Text 'C:\\Windows\\System32\\' zurück. 

Geteilte und freigegebene Postfächer zum EMClient ...
Aus einer Liste von Datumswerten jeweils x Sekunde...
 

Kommentare

Derzeit gibt es keine Kommentare. Schreibe den ersten Kommentar!
Bereits registriert? Hier einloggen
Sonntag, 16. Juni 2024

Sicherheitscode (Captcha)