Jesteś tutaj: GłównaWyrażenia regularne → Znaki i metaznaki

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.

Uciekanie metaznaków

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.