Wyrazenia regularne Perl (PCRE)
Wyrażenia regularne języka Perl (PCRE) mają dużo większe możliwości od wyrażeń standardu POSIX, jednak niestety są trudniejsze do opanowania i tym samym bardziej skomplikowane.
Przed lekturą tego artykułu zapoznaj się z tym tekstem, pozwoli Ci to lepiej zrozumieć ten artykuł.
Wyrażenia PCRE wzbogacają reguły standardu POSIX o swoje własne klasy znaków, które przedstawię poniżej:
- \w - reprezentuje znak tworzący słowo, odpowiada wyrażeniu [A-Za-z0-9];
- \W - jest przeciwieństwem klasy w i odpowiada wyrażeniu [^A-Za-z0-9];
- \s - reprezentuje znaki odstępu;
- \S - reprezentuje wszystkie znaki z wyjątkiem znaków odstępu;
- \d - reprezentuje cyfrę i odpowiada wyrażeniu [0-9];
- \D - reprezentuje dowolny znak z wyjątkiem cyfr i odpowiada wyrażeniu [^0-9];
- \n - reprezentuje znak nowego wiersza;
- \r - reprezentuje znak powrotu karetki;
- \t - reprezentuje znak tabulacji;
Tak więc widać ze wyrażenia PCRE są bardziej zwięzłe w porównaniu z wyrażeniami POSIX. Aby sprawdzić poprawność adresu e-mail można napisać wyrażenie w postaci:
/\w+@\w\.\w{2,4}/
Należy zauważyć ze całe wyrażenie zostało objęte ogranicznikami w tym wypadku są to znaki ukośnika (/), należy o tym pamiętać gdyż wyrażenia PCRE tego wymagają.
Wyrażenie:
/on\/off/
jest odpowiednikiem wyrażenia on/off, należy zauważyć, że znak / został poprzedzony znakiem \.
Odwołania
Rozpatrzmy takie wyrażenie:
/^(\w+) jest człowiekiem. \1 lubi się obijać.$/
Próba dopasowania powyższego wyrażenia do łańcucha:
Bcb jest człowiekiem. Bcb lubi się obijać.
zakończy się pomyślnie. Jednak w przypadku łańcucha:
Bcb jest człowiekiem. On lubi się obijać.
operacja się nie uda gdyż odwołanie nie będzie pasować do imienia podanego w drugim zdaniu.
Jak widać w pierwszej części wyrażenia regularnego fragment dopasowany do imienia został umieszczony w nawiasach, co oznacza, że utworzyliśmy do niego odwołanie.
Funkcje wyrażeń regularnych PCRE
Podstawową funkcją w wyrażeniach PCRE jest funkcja preg_match.
Prototyp funkcji preg_match:
preg_match (wzorzec, lancuch[, dopasowania[, flagi]]);
Funkcja ta spowoduje, że zostanie podjęta próba dopasowania wyrażenia regularnego przekazanego jako parametr wartość do łańcucha znaków przekazanego jako parametr lancuch.
Kolejną funkcją jest: preg_match_all. Składnia wywołania jest taka sama jak w preg_match, jednak ta funkcja poszukuje wszystkich wystąpień podanego wyrażenia regularnego, a nie tylko jednego.
Kolejna funkcja: preg_replace i jej prototyp:
preg_replace (wzorzec, zamiennik, lancuch [, limit]);
Funkcja ta podobnie jak ereg_replace, dopasowuje wyrażenie regularne do podanego łańcucha znaków, a następnie zastępuje specjalne symbole podane w łańcuchu zamiennik odwołaniami zdefiniowanymi w wyrażeniu regularnym.
Przykład:
![]()
$adres = 'jakis@email.pl';
![]()
echo preg_replace ('/^(\w+)@(\w+)\.(\w{2,4})/', '\1 at \2 dot \3', $s);
// return: jakis at email dot pl
![]()
Zakończenie
To by było na tyle jeśli chodzi o wyrażenia regularne PCRE. Trzeba dodać że nie zostały tu opisane tak istotne sprawy jak Wzorce nazwane czy choćby Modyfikatory PCRE a jedynie podstawy wyrażeń regularnych PCRE.





