PowerShell może pracować ze strumieniami obiektów, a nie tylko tekstem. Jest jednak stosunkowo zdolny do przetwarzania tekstu. Jeśli wykonujesz jakąkolwiek pracę związaną z przetwarzaniem tekstu, będziesz wiedział, że Regex jest jedną z najważniejszych koncepcji w każdym języku programowania. W tym artykule pokażesz, jak Aby użyć Regex w PowerShell. Więc zacznijmy!
Co to jest Regex w PowerShell?
Regex to szczególna sekwencja znaków, która wykorzystuje specjalną składnię, aby pomóc w znalezieniu lub dopasowaniu ciągów lub zestawu ciągów. Regex jest w stanie wyszukiwać, edytować i manipulować danymi i tekstem. To wyrażenie instruuje silnik do dopasowania dostarczonego tekstu.
Teraz spojrzymy na metodę Korzystanie z Regex w PowerShell.
Regex z literałami postaci w PowerShell
Przede wszystkim wykonamy wyrażenie regularne, używając „-mecz„Operator. Ten operator przyjmuje wyrażenie regularne do celów dopasowywania wzorców i zwroty ”$ true”Jeśli wzór pasuje.
Teraz wykonamy naszą pierwszą regex, w której sprawdzimy, czy „książka„Dopasowuje się do wzoru”OK”:
> „Book” -Match „OK”
To wyrażenie powróci, ponieważ książka zawiera ciąg „OK"("Książka]").
Regex z grupą postaci w PowerShell
Następnie użyjemy [Grupa znaków] Aby dopasować wiele postaci jednocześnie. W poniższym przykładzie Regex „B [iog]”Jest wykorzystywany do„ z „duży". Wykonanie niniejszej Regex sprawdzi, czy postacie między „B" I "G„W„ wielkim ”meczu z grupą postaci„[iou]”Obecny w„ „B [iou] g„Regex:
> „Big” -Match 'b [iou] g'
W następnym oświadczeniu dodaliśmy „książka,”, Który nie pasuje do określonego regularności. Wykonaj go i zobaczmy, jaki wynik pokaże to stwierdzenie:
> „Book” -Match 'b [iou] g'
To wyrażenie powróci „FAŁSZ" Jak "książka”Nie pasuje do Regex”B [iou] g".
Regex z różnymi wzorami w PowerShell
Wzór może być zbiorem postaci. Znaki mogą być numeryczne [0-9], lub oparte na ASCII [ -~], lub alfabetyczne [A-Z].
> 42 -Match '[0-9] [0-9]' '
To wyrażenie powróci, ponieważ wzór pasuje do dowolnej dwucyfrowej liczby „42”, w naszym przypadku.
Każda cyfra dziesiętna będzie pasować do „\D”Klasa postaci. Z drugiej strony, "\D”Będzie pasować do dowolnej cyfry bez decymu.
> „Server-01” -Match 'Server- \ D \ D'
Powyższe wyrażenie powróci, jeśli będzie pasować do nazwy serwera między (serwer-01-serwer-99).
Każdy postać słów „[A-Z A-Z 0-9]”\ w”Klasa postaci. Spożytkować "\ W„Do dopasowania dowolnej postaci bez słowa.
> „Book” -Match '\ w'
Wykonanie powyższego wyrażenia powróci jako wzór „Książka„Pasuje do postaci pierwszego słowa”B'.
W Regex okres „(.)”Jest uważany za postać wieloznaczną. Z wyjątkiem nowej linii, będzie pasować do dowolnej postaci „(\N)". Poniższe wyrażenie powróci prawdziwie, ponieważ wzór „[a1 \]”Pasuje do czterech postaci.
> „a1 \” -match '…'
„„\S„Klasa znaków służy do dopasowania Whitespace. Mając na uwadze, że, "\S”Lub może być wykorzystywany do dopasowywania znaków innych niż.
> ' -' -Match '\ s-'
Wykonanie powyższego wyrażenia powróci „PRAWDA”Jako wzór„[ -]”Zastosował obie metody, aby dopasować przestrzeń.
Regex z kwantyfikatorami w PowerShell
Kwantyfikatory obsługują liczbę razy, gdy każdy element powinien pojawić się w ciągu wejściowego. Niektóre kwantyfikatory dostępne w PowerShell są następujące:
Poniższe polecenie poniżej powróci dla dowolnej nazwy serwera, a nawet nazwy serwerów bez kresek.
> „Server01” -Match ”[a -z]+-?\ d \ d '
Teraz spróbujemy dopasować numer telefonu do Regex ”\ d 3-\ d 3-\ d 4".
> '111-222-3333' -Match '\ d 3-\ d 3-\ d 4'
Wyrażenie powróci „PRAWDA”Jeśli dowie się prawidłowego numeru telefonu zgodnie z określonym wzorem.
W następnej części użyjemy Regex w skryptach PowerShell. W tym celu, po pierwsze, otwórz Windows PowerShell Ise, i utwórz nowy plik:
Napisz poniżej danego kodu do dopasowywania numerycznego i łańcucha. W tym skrypcie zapisaliśmy wzór w „$ wiadomość" zmienny. W drugiej linii to „$ wiadomość„Zmienna będzie zgodna z jego wartością do„błąd„Regex za pomocą„-mecz„Operator. Dodaliśmy również wiersz kodu do dopasowywania wzorców numerycznych:
$ message = 'Występuje błąd z plikiem' '
$ message -Match „Błąd”
„123-45-6789” -Match '\ d \ d \ d- \ d \ d- \ d \ d \ d \ d ”
Zapisz ten plik jako „testFile1.PS1„PowerShell scenariusz i wykonaj go, naciskając„Uruchomić" przycisk.
Oba wzorce są dopasowane do określonej regex, aby to wyrażenie powróciło „PRAWDA„Dla każdego przypadku.
Możesz również dopasować regex do tablicy. Aby to zademonstrować, ogłosiliśmy tablicę „$ Data„W naszym skrypcie. Ta tablica zawiera pewne wartości numeryczne i łańcuchowe. Po dodaniu wartości do tablicy dopasujemy ją do regularności: „\ d \ d \ d- \ d \ d- \ d \ d \ d \ d". To stwierdzenie sprawdzi, czy tablica ma jakieś wartości liczbowe z wzorem określonym w wyrażeniu regularnym i wydrukuje na terminalu PowerShell.
$ data = @(
„To jest jakiś ogólny tekst”
„Numer telefonu to 333-99-2222”
„Inne oświadczenie tekstowe”
„Numer telefonu 444-44-4444”
)
$ data -match '\ d \ d \ d- \ d \ d- \ d \ d \ d \ d'
Operator zamień wykorzystuje Regex do dopasowywania wzorów. Ten operator szuka wzoru, a następnie zastępuje go innym wzorem określonym w poleceniu. Na przykład w skrypcie poniżej, mamy „$ wiadomość„Zmienna zawierająca wartość ciągu„Cześć, nazywam się Sharqa ”. Chcemy zastąpić „Sharqa" z "Sharqa Hameed". Z „-zastępować„Operator, napisamy wzór, który chcemy wymienić, a następnie dodamy wzór, który chcemy wymienić.
$ message = "Cześć, nazywam się Sharqa"
$ message -replace „Sharqa”, „Sharqa Hameed”
Zachowaj to "testFile1.PS1„Skrypt PowerShell. Wykonanie tego skryptu wyświetli wartość „$ wiadomość”Zmienna z zastąpionym ciągiem„Sharqa" z "Sharqa Hameed".
Wniosek
Istnieje wiele koncepcji programowania, w których możesz użyć Regex lub gdzie możesz już używać Regex, nie zdając sobie z tego sprawy. PowerShell Wykonuje doskonałą robotę, aby włączyć funkcje Regex do swojego języka.
Dzięki wiedzy uzyskanej z tego artykułu powinieneś być w stanie użyć Regex w PowerShell, aby dopasować wzorce numeryczne lub tekstowe podczas wyszukiwania wysoce złożonych lub określonych zwrotów. Pokazaliśmy również, jak używać kwantyfikatora Regex w skryptach PowerShell.