środa, 2 stycznia 2008

modyfikatory w RegExp PHP


Wyrażenia regularne (ang. regular expressions, w skrócie regex lub regexp) to wzorce, które opisują łańcuchy symboli. Zdaniem niektórych lepszym tłumaczeniem angielskiej nazwy byłoby wyrażenia regułowe ponieważ, chodzi tu nie o regularność, a o reguły opisywane tymi wyrażeniami. Obecna nazwa jest jednak mocno zakorzeniona w literaturze informatycznej. Teoria wyrażeń regularnych jest związana z teorią tzw. języków regularnych. Wyrażenia regularne mogą określać zbiór pasujących łańcuchów, mogą również wyszczególniać istotne części łańcucha.

Dwie najpopularniejsze składnie wyrażeń regularnych to składnia uniksowa i składnia perlowa. Składnia perlowa jest znacznie bardziej rozbudowana. Jest ona używana nie tylko w języku Perl, ale także w innych językach programowania: (Ruby), bibliotece PCRE do C i w narzędziu powłoki o nazwie pcregrep (znanego też jako pgrep).

Źródło pl.wikipedia.org



To na tyle teorii o wyrażeniach regularnych zaczerpniętej z encyklopedii, dalej przejdę do dających dużo możliwości modyfikatorów...

    Modyfikatory:
  • mogą występować - nie są obowiązkowe

  • zmieniają sposób dopasowania wyrażenia



    Lista Modyfikatorów:
  1. i - nie ma znaczenia wielkość liter

  2. m - interpretacja po kolei wszystkich wersów napisu - ^ oraz $ oznaczają początek oraz koniec wersu

  3. s - . pasuje również do \n (kropka pasuje również do znaku nowej linii)

  4. x - ignorowanie białych znaków (\s), wyrażenie reg. może zawierać komentarze (komentarz jest interpretowany od znaku # do znaku końca linii)

  5. U - odwraca zachłanność kwantyfikatorów (*)

  6. u - kodowanie w utf-8

  7. A - kotwica ^ pasuje wyłącznie do początku napisu

  8. D - kotwica $ pasuje wyłącznie do końca napisu

  9. e - umożliwia używanie funkcji php (tylko preg_replace)


    Sposoby użycia:
  1. po końcowym ograniczniku wyrażenia np. '/(.*?)/s'

  2. w wyrażeniu; początek modyfikatora to (?i), ustawienie oraz usunięcie to (?i-x), samo usunięcie realizuje się przy pomocy (?-x), np. '/(?:(?i)jeden|(?-i)DWA)/' - dopasuje np. do JEDEn