Powershell i wyrażenia regularne

17-Wrz-2014

Dajmy na to, że masz listę numerów telefonów:

$list = ‚+48 123456789′,’123456789′,’0048 123456789′,’+48123456789’

Chcesz z niej wylistować tylko te, które mają budowę:

  • +48 123456789 lub
  • 0048 123456789

Czyli na początku +48 lub 0048, po czym występuje spacje i 9 cyfr. Odpowiada za to maska \+48 [0-9]{9}|0048 [0-9]{9}

Definiujemy więc zmienną $mask:

$mask = [regex]”\+48 [0-9]{9}|0048 [0-9]{9}”

… i gotowe. Teraz pora na iterację. Można ro zrobić na dwa sposoby. Można skorzystać z metody Matches klasy regex. Metoda zwraca listę elementów pasujących do wyrażenia regularnego. Wejściem również jest listą:

foreach($l in $mask.Matches($list))
{
$l
}

A oto druga metoda – wywołanie metody IsMatch, która sprawdza czy przekazany napis spełnia warunek wyrażenia regularnego i zwraca true lub false:

foreach($l in $list)
{
if($mask.IsMatch($l))
{
$l
}
}

Dodaj komentarz:

Autor: Rafał Kraik