Wyrażenia regularne (ang. regular expressions, w skrócie regex lub regexp) – wzorce, które opisują łańcuchy symboli. Teoria wyrażeń regularnych jest związana z teorią 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.Gdzie można stosować takie wyrażenia?
Wyrażenia regularne to w informatyce teoretycznej ciągi znaków pozwalające opisywać języki regularne. W praktyce znalazły bardzo szerokie zastosowanie, pozwalają bowiem w łatwy sposób opisywać wzorce tekstu, natomiast istniejące algorytmy w efektywny sposób określają, czy podany ciąg znaków pasuje do wzorca lub wyszukują w tekście wystąpienia wzorca. Wyrażenia regularne w praktycznych zastosowaniach są zapisywane za pomocą bogatszej i łatwiejszej w użyciu składni niż ta stosowana w rozważaniach teoretycznych.
http://xkcd.com/208/ |
Zaczynając od .htaccessa [o którym będzie w innym cyklu], poprzez wyszukiwanie ciągu znaków w skrypcie na przeszukiwaniu projektów kończąc. To oczywiście tylko trzy ogólne przykłady.
Praktyka
Znaki zwykłe
- wszystkie niespecjalne [o specjalnych trochę niżej] znaki, określają one same siebie; są to wszystkie litery bądź cyfry, oraz kilka innych znaków np:
a h x 8 2 !
- ciągi znaków niespecjalnych, oznaczające, że znaki muszą wystąpić w tekście w takiej kolejności jak zapisano w wyrażeniu, np:
abc gh ykZnaki specjalne - znaki o specjalnym przeznaczaniu
- kropka '.' - dowolny jeden znak, np
do wyrażenia ta.a będzie pasować tata, tama, tara, taka, etc
- gwiazdka '*' - zero lub więcej wystąpień poprzedzającego ją wyrażenia.:
f*oobar pasuje: oobar, foobar, fffffffffoobar, etc
k.*ala pasuje kala, koala, kooooala, krala, krrrrala, etc
- plus '+' - co najmniej jeden element poprzedzający
pa+nda można dopasować: panda, paanda, paaaaaaaanda, etc
- znak zapytania '?' - zero lub jedno wystąpienie elementu poprzedzającego:
babk?a pasuje zarówno babka jak i baba
- nawiasy okrągłe '( )' - zapamiętują zawartość nawiasu jako element, służy do grupowania znaków w elementy:
(kot)+ dopasuje do: kot, kotkot, kotkotkot
- nawiasy kwadratowe '[ ]' - zestawy znaków, bez dodatkowych znaków specjalnych oznaczają jeden znak spośród wymienionych w środku
[0-9] - cyfry
[a-z] - małe litery
[A-Z] - duże litery
[0-9a-zA-ZąćęłńóśźżĄĆĘŁŃÓŚŹŻ] - wszystkie cyfry, małe oraz duże litery, oraz polskie znaki
[atm]+ dopasujemy: tama, tata, mata, mama, mam, etc
- pionowa kreska '|' - alternatywa czyli OR:
k[o|a]?tek dopasujemy ktek, kotek lub katek
- daszek '^' oznacza początek wiersza, dolar '$' oznacza koniec wiersza
do wyrażenia ^kot dopasujemy kot i pies, ale już nie pies i kot
natomiast do kot$ dopasujemy pies i kot, ale już nie kot i pies
- daszek '^' wewnątrz [ ] powoduje negację tego, co znajduje się wewnątrz nawiasów
do [^e] dopasujemy wszystkie ciągi nie zawierające litery e, np: koala, miś, etc [tzn etc już nie :P]Wyświetlanie znaków specjalnych
- aby wyświetlić znak specjalny należy poprzedzić go backslashem \, dzięki czemu nie będzie on interpretowany jako znak specjalny ale tak samo jak znam zwykły, np:
\\ \. \*Klasy znaków
- \w dowolny znak należący do słowa(cyfry, litery oraz znak '_' )
- \W dowolny znak nie należący do słowa
- \s dowolny biały znak (np spacja)
- \S dowolny nie biały znak
- \d dowolna cyfra
- \D dowolny znak który nie jest cyfrą
- [[:alpha:]] - dowolna litera
- [[:lower:]] - dowolna mała litera
- [[:upper:]] - dowolna duża litera
- [[:digit:]] - dowolna cyfra
- [[:alnum:]] - dowolna litera bądź cyfra
- [[:punct:]] - dowolny znak interpunkcyjny
- [[:xdigit:]] - dowolna liczba w systemie szesnastkowym
- \n - nowa lina
- \r - powrót karetki
- \t - tabulacja
- \a - alarm
- \e - escape
Na dzisiaj chyba wystarczy ;) W następnym 'odcinku' postaram się opisać bardziej zaawansowane sposoby na wykorzystanie tego, czego nauczyliśmy się dzisiaj.
Brak komentarzy:
Prześlij komentarz