CompZone.Org :: Artykuły :: PHP
Która technologia najbardziej Cię interesuje?
PHP
ASP
AJAX
SQL
JavaScript
Inna
Sonda Wyniki

Add to Google

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:

 <?php
$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.

jedre @ 11-07-2006 16:18
Brak komentarzy...
Copyright © 2005-2006 Compzone.Org. Kopiowanie i wykorzystywanie materiałów zawartych na tej stronie bez zgody autora zabronione!