Wyrażenia Regularne dla każdego

Blog o wyrażeniach regularnych i perlu

Wyrażenia regularne cz 3

Posted by wyrazeniaregularne on Sierpień 9, 2010
Kategorie: Regex.

Przykłady

  • prosty wzorzec e-maila
    [a-z0-9_.-]+@[a-z0-9_.-]+\.\w{2,4}
  • adres IP
    \d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}
  • zawartość tagów
    <TAG[^>]*>(.*?)</TAG>
  • kod pocztowy
    [0-9]{2}-[0-9]{3}

Wyrażenia regularne cz 2

Posted by wyrazeniaregularne on Sierpień 9, 2010
Kategorie: Regex.

Liczba powtórzeń

  1. wyrażenie {N} oznacza dokładnie N wystąpień
    wyrażenie \d{3} oznacza dokładnie 3 cyfry
  2. wyrażenie {N,M} oznacza od N do M wystąpień
    wyrażenie \d{2,3} oznacza od 2 do 3 cyfr
  3. wyrażenie {N,} oznacza co najmniej N wystąpień
    wyrażenie \d{3,} oznacza co najmniej 3 cyfry
  4. wyrażenie {,N} oznacza co najwyżej N wystąpień
    wyrażenie \d{,3} oznacza co najwyżej 3 cyfry

  • Zachłanność domyślnie wyrażenia regularne są zachłanne czyli próbują dopasować jak największy obszar
    przykładowo mamy kod <div>Ala <div>ma kota</div>a kot ma ale </div>
    Wyrażenie postaci <div>.*<\/div> dopasuje cały tekst czyli
    <div>Ala <div>ma kota</div>a kot ma ale </div>
    Jak temu zaradzić? Należy dodać symbol ? do wyrażenia co z powoduje, że nasze wyrażenie będzie leniwe (pierwsze dopasowanie będzie ostatecznym)
    <div>.*?<\/div>
    <div>Ala <div>ma kota</div>

Wyrażenia regularne cz 1

Posted by wyrazeniaregularne on Sierpień 9, 2010
Kategorie: Regex.

Składnia

  • zwyczajne znaki oznaczające wyłącznie siebie samego np. a, z, g, 1, 9, ! (nie mają żadnego innego znaczenia poza znaczeniem podstawowym)
  • znaki specjalne (metaznaki) mają specjalne znaczenie:
    1. . dopasowanie dowolnego jednego znaku (łopatologicznie kropka oznacza dowolny jeden znak)
      do wyrażenia a.a można dopasować aua, ala, ada
    2. * dopasowanie zera lub większej liczby elementów poprzedzających
      do wyrażenia w*akacje można dopasować akacje, wakacje, wwwwakacje
    3. + dopasowanie co najmniej jednego poprzedzającego elementu (łopatologicznie 1 lub więcej razy)
      do wyrażenia nu+da można dopasować nuda, nuuda, nuuuuuuuuuda
    4. ? dopasowanie zera lub jednego poprzedzającego elementu
      (łopatologicznie element poprzedzający może ale nie musi wystąpić)
      do wyrażenie a?a można dopasować aa, a
    5. () zapamiętanie zawartości nawiasu jako elementu
      wyrażenie mieszkam na ulicy (Wesołej)
      takie wyrażenie zapamięta wartość w nawiasie czyli Wesołej
    6. [] dopasowanie jednego elementu z listy, wszystkie elementy listy muszą znaleźć się pomiędzy [ i ]. Uwaga! Pamiętaj, że każdy znak pomiędzy [] traktowany jest jako pojedynczy  znak.
      do wyrażenia [abcd]+ dopasujemy a, c, ab, acd, dac
    7. - tworzenie zakresu w liście czyli tylko pomiędzy []
      do wyrażenia [a-p] dopasujemy dowolną literę z przedziału a-p
    8. | oznacza lub czyli alternatywę
      do wyrażenia Kopernik był (kobietą|mężczyzną) dopasujemy zarówno Kopernik był kobietą jak i Kopernik był mężczyzną
    9. ^ dopasowanie do początku pola ( łopatologicznie znak następujący po ^ musi być początkiem wyrażenie w którym dokonywujemy dopasowania)
      do wyrażenia ^Ala
      dopasujemy Ala ma kota ale już nie dopasujemy Kot ma Ale

      ^ stosujemy także razem z [] w liście do wyrażenia negacji
      do wyrażenia [^a]+ dopasujemy jakiekolwiek słowo które nie zawiera litery a np. kret, pies
    10. $ dopasowanie do końca pola( łopatologicznie znak poprzedzający $ musi być końcem wyrażenie w którym dokonywujemy dopasowania)
      do wyrażenia Ale$ dopasujemy zdanie Kot ma Ale ale nie dopasuje już Ale gorąco
    11. \ oznacza anulowanie znaczenia wszystkich powyższych symboli (łopatologicznie wszystkie specjalne znaki po poprzedzeniu ich \ “tracą moc” i odzyskują podstawowe znaczenie)
      \. lub \+
      oznaczają tylko i wyłącznie kropkę i plus

  • Symbole formatujące tekst

  1. \e oznacza escape
  2. \n oznacza nową linię
  3. \r oznacza powrót karetki
  4. \t oznacza tabulację
  5. \a oznacza alarm

  • Wbudowane klasy znaków( występują w parach \mała litera \duża litera, gdzie  mała litera np \d (skrót od  digit)  to dowolna cyfra, a duża litera np \D dowolny znak nie będący \d czyli dowolny znak nie będący cyfrą)
  1. \d dowolna cyfra
  2. \D dowolny znak nie będący cyfrą
  3. \s dowolny biały znak (np spacja)
  4. \S dowolny znak nie będący białym znakiem
  5. \w dowolny znak należący do słowa(cyfry, litery i znak _)
  6. \W dowolny znak nie należący do słowa
  • Pozostałe klasy znaków

  1. [[:digit:]] dowolny znak będący cyfrą
  2. [[:alpha:]] dowolny znak będący literą
  3. [[:alnum:]] dowolny znak będący literą lub cyfrą
  4. [[:lower:]] dowolny znak będący małą literą
  5. [[:upper:]] dowolny znak będący dużą literą
  6. [[:punct:]] dowolny znak interpunkcyjny

Wyrażenia regularne wstęp

Posted by wyrazeniaregularne on Lipiec 31, 2010
Kategorie: Regex.

Co to są wyrażenia regularne?

Wyrażenia regularne (regex) to wzorce służące do dopasowywania lub znajdowania łańcuchów symboli przy użyciu symboli wieloznacznych i metaznaków.

Gdzie mogą przydać się wyrażenia regularne? Wszędzie gdzie mamy w jakiś sposób  u standaryzowaną strukturę danych.

Z czym to się je czyli jak wyglądają regexy:

[0-9]{2}-[0-9]{3}  Kod pocztowy

[0-9]{9} lub \d{9} Pesel

Nawigacja po wpisach

  • gry Linux Komunikatory

Blog na WordPress.com. Theme: Parament by Automattic.
Follow

Otrzymuj każdy nowy wpis na swoją skrzynkę e-mail.

Silnik: WordPress.com