Kurs Perl – cz. 5

1. Wstęp

W części piątej dalej kontynuujemy wątek wyrażeń regularnych w Perlu. Tym razem pokażę inne zastosowanie znaku ? i powiem jak można wykorzystać wyrażenia regularne do podmieniania i dzielenia tekstu ;) Krótko, ale treściwie.

2. Inne znaczenia znaku zapytania

W części czwartej dowiedziałeś się, że znak zapytania w wyrażeniu regularnym oznacza, że znak przed nim stojący może wystąpić zero lub jeden raz. Jednak są konstrukcje, w których również wykorzystywany jest znak zapytania, a zmieniają one jego znaczenie. Oto one:

  • (?=wyrazenie) – taki zapis w wyrażeniu regularnym oznacza, że dany ciąg będzie pasował tylko wtedy kiedy znajdzie się za nim ciąg podany w nawiasie. Przykładowo zapis  Hello(?= world) zadziała tylko kiedy po słowie Hello znajdzie się słowo world poprzedzone spacją.
  • (?!wyrazenie) – negacja poprzedniego zapisu, tzn. ciąg będzie pasował kiedy po nim nie znajdzie się ciąg podany w nawiasach.
  • (?<=wyrazenie) – podobny do pierwszego z tym, że w tym wypadku ciąg będzie pasował jeśli podany w nawiasach ciąg znajdzie się przed nim.
  • (?<!wyrazenie) – negacja poprzedniego, tzn. ciąg będzie pasował kiedy przed nim nie znajdzie się ciąg podany w nawiasach

Ciąg zawarty w podanych powyżej konstrukcjach nie znajdzie się w wynikach. Aby wyraz nie znalazł się w wynikach można również użyć innej konstrukcji:

 3. Podmienianie i dzielenie tekstu

Aby podmienić w tekście ciąg pasujący do wzorca należy skorzystać z poniżej konstrukcji, która podmieni pierwszy pasujący do wyrażenia ciąg na nowy podany po znaku slash:

Jeśli chciałbyś podmienić wszystkie wystąpienia danego wzorca to musisz dodać na końcu opcję g:

Możesz też we wzorcach służących do zmiany ciągów korzystać z nawiasów i zmiennych $1, $2… Dzięki temu masz możliwość ujęcia np. znalezionego ciągu w cudzysłowy. Poniższy kod spowoduje, że wszystkie liczby całkowite występujące w tekście będą ujęte w znaki cudzysłowu:

Do dzielenia tekstu we wskazanych miejscach służy funkcja split(), która zwraca tablicę otrzymanych fragmentów. Jako pierwszy argument przyjmuje separator, którym poza pojedynczym znakiem może być również wyrażenie regularne:

 4. Podsumowanie

W dzisiejszym wpisie uzupełniłem co nieco informacji na temat wyrażeń regularnych. Jeśli uważasz, że brakuje tutaj jakiejś istotnej dla Ciebie informacji to pisze w komentarzach, postaram się uzupełnić kurs :)

Wyrażenia regularne są w Perlu bardzo istotne dlatego następna część będzie w całości poświęcona przykładowym wyrażeniom i programom korzystającym z nich. Żeby nie przegapić kolejnych części jak również wszelkich informacji związanych z blogiem wystarczy, że polubisz go na Facebooku ;)

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *