Jak używać Regex w PowerShell

Jak używać Regex w PowerShell
Wyrażenie regularnes lub Regex może być skomplikowane dla początkujących, ale jest bardzo skuteczną techniką w interakcji z strunami. Język Regex jest potężnym skrótem do opisu i służy do analizowania i dopasowania tekstu. PowerShell używa wyrażeń regularnych na wiele sposobów. Ponieważ polecenia PowerShell lub CMDLETS są tak ściśle zintegrowane, łatwo jest zapomnieć o użyciu Regex. Może nie wiesz, że niektóre z tych poleceń już używają Regex.

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:

  • [*] służy do określenia występowania dowolnego elementu jako „zero lub więcej razy."
  • [+] służy do określenia występowania dowolnego elementu jako „jeden lub więcej razy."
  • [[[?] służy do określenia występowania dowolnego elementu jako „jeden lub zerowy czas."
  • [N] służy do określenia występowania dowolnego elementu dokładnie tak, jak „N razy."
  • n, m służy do określenia występowania dowolnego elementu jako „przynajmniej n razy, ale nie więcej niż m."

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.