rakli 13 Geschrieben 24. Juli 2018 Melden Teilen Geschrieben 24. Juli 2018 Hi, wo liegt mein Fehler, ich wi PS C:\TEST> 'test' -match '[se]' True PS C:\TEST> 'test' -match '[^se]' True PS C:\TEST> 'test' -match '[^xy]' True Zitieren Link zu diesem Kommentar
BOfH_666 577 Geschrieben 24. Juli 2018 Melden Teilen Geschrieben 24. Juli 2018 (bearbeitet) Da fehlt wohl das entscheidende Stück der Frage, oder? Was willst Du denn erreichen? Wenn Du im Pattern eckige Klammern benutzt suchst Du nach einer ZeichenKlasse ... in Deinem Fall also nach der Existenz von klein s und klein e aber nicht zwingend in dieser Reihenfolge. Das Caret-Zeichen (^) ist normalerweise ein Anker und meint "Am Anfang des Suchstrings". Ob es innerhalb einer Charachterklasse die gleiche Bedeutung hat, weiß ich nicht - bin aber eher skeptisch. Wenn Du eigentlich nach einer ZeichenGruppe suchen wolltest, müsstest Du normale runde Klammern benutzen. So klappt's wie erwartet: PS:>'test' -match '(es)' True und so klappt es nicht ... aber auch erwartet ... PS:>'test' -match '(^es)' False So ... ich hab nochmal recherchiert ... das Caret-Zeichen am Anfang innerhalb einer Zeichenklasse [^...] kehrt die nachfolgenden Zeichen um. Also in Deinem zweiten Beispiel suchst Du Alles ausser s und e. Das heißt Du findest die beiden t's. Das kannst Du auch überprüfen, indem Du Dir die nach einem positiven "Match" automatisch befüllte Variable $Matches mal auf der Konsole ausgeben lässt. Das Caret-Zeichen an beliebiger Stelle innerhalb einer Zeichenklasse [...^...], meint einfach ein literales Caret-Zeichen. bearbeitet 24. Juli 2018 von BOfH_666 Zitieren Link zu diesem Kommentar
rakli 13 Geschrieben 25. Juli 2018 Autor Melden Teilen Geschrieben 25. Juli 2018 Danke Zitieren Link zu diesem Kommentar
Empfohlene Beiträge
Schreibe einen Kommentar
Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.