PowerShell kann eher mit Objektströmen als nur mit Text arbeiten. Es ist jedoch relativ in der Textverarbeitung fähig. Wenn Sie Arbeiten zur Textverarbeitung ausführen, wissen Sie, dass der Regex eines der wichtigsten Konzepte in jeder Programmiersprache ist. In diesem Artikel werden Sie Ihnen zeigen, wie Regex in PowerShell verwenden. Also beginnen wir beginnen!
Was ist Regex in PowerShell??
Ein Regex ist eine bestimmte Reihenfolge von Zeichen, die eine spezielle Syntax verwendet, um Sie beim Auffinden oder Anpassen von Zeichenfolgen oder einer Reihe von Strings zu unterstützen. Regex ist in der Lage, Daten und Text zu suchen, zu bearbeiten und zu manipulieren. Dieser Ausdruck weist den Motor an, dem bereitgestellten Text zu entsprechen.
Jetzt werden wir uns die Methode von ansehen Verwenden von Regex in PowerShell.
Regex mit Charakterliteralen in PowerShell
Zunächst werden wir einen regulären Ausdruck ausführen, indem wir die „verwenden“-passen" Operator. Dieser Bediener nimmt einen regelmäßigen Ausdruck für Musteranpassungszwecke und Rückgaben an “$ trueWenn das Muster übereinstimmt.
Jetzt werden wir unseren ersten Regex ausführen, in dem wir prüfen, ob die “Buch"Übereinstimmung mit dem Muster"OK”:
> 'Buch' -Match 'ok'
Dieser Ausdruck wird wahr zurückgegeben, weil das Buch die Zeichenfolge enthältOK“("Buch]").
Regex mit Charaktergruppe in PowerShell
Als nächstes werden wir die verwenden [Charaktergruppe] mehrere Zeichen gleichzeitig zu entsprechen. Im folgenden Beispiel ein Regex “B [IOG]"Wird verwendet, um mit" übereinstimmen "groß”. Die Ausführung dieses Regex wird überprüfen, ob die Charaktere zwischen “B" Und "G"In" Big "Match mit der Charaktergruppe"[iou]"Präsent in"b [iou] g”Regex:
> 'Big' -Match 'b [iou] g'
In der nächsten Erklärung haben wir hinzugefügt “Buch,Das entspricht nicht dem angegebenen Regex. Führen Sie es aus und lassen Sie uns sehen, welches Ergebnis diese Aussage zeigen wird:
> 'Buch' -Match 'b [iou] g'
Dieser Ausdruck wird zurückkehren "FALSCH" als "Buch"Stimmt nicht mit dem Regex überein"b [iou] g”.
Regex mit verschiedenen Mustern in PowerShell
Ein Muster kann eine Sammlung von Charakteren sein. Charaktere können numerisch sein [0-9], oder ASCII-basiert [ -~], oder alphabetisch [A-Z].
> 42 -Match '[0-9] [0-9]'
Dieser Ausdruck wird wahr zurückgegeben, wenn das Muster in unserem Fall eine zweistellige Zahl "42" entspricht.
Jede Dezimalstellen entspricht dem “\D”Charakterklasse. Andererseits, "\D”Wird zu einer nicht dezimalen Ziffer übereinstimmen.
> 'Server-01' -Match 'Server- \ d \ d'
Der oben gegebene Ausdruck gibt True zurück, wenn er einem Servernamen zwischen (Server-01-Server-99) übereinstimmt.
Jeder Wortcharakter “[A-Z A-Z 0-9]"Wird durch die" übereinstimmen "\ w”Charakterklasse. Nutzen “\ W”Für den Abzug eines Nicht-Wort-Charakters.
> 'Buch' -Match '\ W'
Die Ausführung des oben gegebenen Ausdrucks wird als Muster wahr zurückgegeben. “Buch”Passt zum ersten Wortcharakter 'B''.
In Regex die Periode “(.)”Wird als Wildcard -Charakter angesehen. Mit Ausnahme einer neuen Linie passt es zu jedem Charakter “(\N)”. Der untergegebene Ausdruck wird wahr zurückgeführt, weil das Muster “[A1 \]”Passt zu vier Zeichen.
> 'a1 \' -patch '...'
Der "\SDie Charakterklasse wird verwendet, um Whitespace zu entsprechen. Wohingegen, "\S”Oder kann verwendet werden, um nicht-Whitespace-Zeichen abzustimmen.
> ' -' -match '\ s-'
Die Ausführung des oben gegebenen Ausdrucks wird zurückkehrenWAHR"Als Muster"[ -]”Benutzte beide Methoden, um den Raum zu entsprechen.
Regex mit Quantifizierern in PowerShell
Quantifizierer verarbeiten die Anzahl, mit der jedes Element in der Eingangszeichenfolge angezeigt wird. Einige in PowerShell verfügbare Quantifizierer sind wie folgt:
Der folgende Befehl untergewandt wird TRUE für jeden Servernamen, sogar Servernamen ohne Striche.
> 'Server01' -Match '[A -Z]+-?\ d \ d '
Jetzt werden wir versuchen, eine Telefonnummer mit der Regex zu erreichen\ d 3-\ d 3-\ d 4”.
> '111-222-3333' -match '\ d 3-\ d 3-\ d 4'
Der Ausdruck wird zurückkehren "WAHR”Wenn es eine korrekte Telefonnummer entsprechend dem angegebenen Muster herausfindet.
Im nächsten Teil werden wir Regex in PowerShell -Skripten verwenden. Dafür öffnen Sie zunächst Ihre Windows PowerShell Ise, und erstellen Sie eine neue Datei:
Schreiben Sie den untergegebenen Code für numerische und String-Matching auf. In diesem Skript haben wir ein Muster in der “gespeichert“$ meldung”Variable. In der zweiten Zeile das “$ meldung"Variable entspricht ihrem Wert mit dem"Fehler"Regex", indem Sie die "verwenden"-passen" Operator. Wir haben auch eine Codezeile für numerische Musteranpassungen hinzugefügt:
$ message = 'Es gibt einen Fehler mit Ihrer Datei'
$ message -patriat 'Fehler'
'123-45-6789' -Match '\ d \ d \ d- \ d \ d- \ d \ d \ d \ d'
Speichern Sie diese Datei als "TestFile1.PS1"PowerShell -Skript" und führen Sie es aus, indem Sie die “drücken“Laufen" Taste.
Beide Muster werden mit dem angegebenen Regex übereinstimmen, damit dieser Ausdruck zurückgegeben wird “WAHR”Für jeden Fall.
Sie können auch mit einem Regex mit einem Array übereinstimmen. Um dies zu demonstrieren, haben wir ein Array deklariert “$ Daten”In unserem Drehbuch. Dieses Array enthält einige numerische und Zeichenfolgewerte. Nach dem Hinzufügen von Werten zum Array werden wir es mit einem Regex anpassen: “\ d \ d \ d- \ d \ d- \ d \ d \ d \ d \ d“. Diese Anweisung wird prüfen, ob das Array numerische Werte mit dem im regulären Ausdruck angegebenen Muster hat, und drucken Sie es auf Ihrem PowerShell -Terminal aus.
$ data = @(
"Dies ist ein allgemeiner Text"
"Die Telefonnummer ist 333-99-2222"
"Eine andere Textanweisung"
"Telefonnummer 444-44-4444"
)
$ Data -Match '\ d \ d \ d- \ d \ d- \ d \ d \ d \ d'
Der Ersatzbetreiber verwendet Regex für die Musteranpassung. Dieser Bediener sucht nach einem Muster und ersetzt es dann durch das andere im Befehl angegebene Muster. Zum Beispiel haben wir im untergegebenen Skript das “$ meldung"Variable, die einen Zeichenfolgenwert enthalten"Hallo, mein Name ist Sharqa. Wir wollen „Sharqa ersetzen" mit "Sharqa Hameed”. Mit dem "-ersetzen„Operator, wir werden das Muster, das wir überhaupt ersetzen möchten, schreiben und danach werden wir das Muster hinzufügen, das wir ersetzt werden möchten.
$ message = "Hallo, mein Name ist Sharqa"
$ message -replace 'Sharqa', 'Sharqa Hameed' '
Speicher das "TestFile1.PS1”PowerShell -Skript. Die Ausführung dieses Skripts gibt den Wert der von “aus$ meldung"Variable mit der ersetzten Zeichenfolge"Sharqa" mit "Sharqa Hameed”.
Abschluss
Es gibt zahlreiche Programmierkonzepte, bei denen Sie verwenden können Regex oder wo Sie Regex bereits verwenden können, ohne es zu merken. Power Shell Hat hervorragende Arbeit, um Regex -Funktionen in seine Sprache einzubeziehen.
Mit dem Wissen aus diesem Artikel sollten Sie in der Lage sein, Regex in PowerShell so zu verwenden, dass sie numerische oder Textmuster entsprechen, während Sie nach hochkomplexen oder spezifischen Phrasen suchen. Wir haben Ihnen auch gezeigt, wie Sie den Regex -Quantifizierer in PowerShell -Skripten verwenden.