Jesteś tutaj: Główna → Wyrażenia regularne → Znaki i metaznaki
Wyrażenia regularne mogą składać się ze znaków (na przykład:
a lub Litwo! Ojczyzno moja!) i
metaznaków. Metaznaki wyglądają jak zwykłe znaki, jednak o ile
zwykłe znaki interpretowane są dosłownie (lub z
angielskiego - literalnie; literał to sposób zapisywania
wartości w kodzie programu, w naszym przypadku programem jest
mechanizm dopasowywania wzorców, a wartością - dopasowywany tekst),
co oznacza mniej więcej tyle, że litera P dopasowana
jest do P, to metaznaki nie są dopasowywane w
ten sposób; dodatkowo, mogą one – te metaznaki
– wpływać na zachowania sąsiadujących z nimi znaków.
Metaznakami są:
. + ? * ^ $ [ ( ) \ | {
czyli, mówiąc po ludzku: kropka, plus, znak zapytania, asterisk, karetka, dolar, nawias kwadratowy otwierający, nawiasy zwykłe, backslash, kreska pionowa (alternatywa), klamra otwierająca.
Specjalne znaczenie metaznaków najlepiej wytłumaczyć na
przykładzie: jeśli chciałbyś napisać wyrażenie regularne, które
dopasowuje ciąg znaków *.txt, to poprawnym
wyrażeniem będzie \*\.txt, a nie *.txt.
Dzieje się tak dlatego, że zarówno kropka ., jak i
asterisk * są właśnie metaznakami i nie są
dopasowywane „literalnie” (o czym dowiesz się
już za moment).
W powyższym przykładzie widać jeszcze jedną cechę metaznaków: chcąc
dopasować metaznak należy poprzedzić go
backslashem. Z angielska nazywa się
to escape character, co można – ale nie
należy – tłumaczyć jako „uciec znak”.
Mi się to podoba, nie wiem, jak tobie. Ale uwaga: operacji tej
należy dokonywać tylko w przypadku metaznaków, bo, przykładowo,
\s nie dopasowuje litery s, a
znaki odstępu (np. spacje).
Gwoli kompletności, należy wspomnieć w tym miejscu, że metaznaki
tracą swoje specjalne znaczenie, jeśli wziąć je w nawiasy
kwadratowe [...], w celu wyróżnienia pewnego zakresu
znaków. Wówczas traktowanie są one literalnie. O wykorzystaniu nawiasów kwadratowych
możesz przeczytać
gdzie
indziej.