Зворотний слеш, Регулярні вирази, PHP-Spravka
Символ має кілька застосувань. Насамперед, якщо він передує не буквенно-цифровому символу, він знімає з нього особливе значення. Застосування зворотного слеша як символу, що екранує, допустимо як у символьному класі, так і поза ним.
Наприклад, якщо ви хочете задати відповідність символу '*', у шаблоні вам необхідно вказати '\*'. Це запобігатиме трактуванню '*' як метасимволу з особливим значенням. Щоб уникнути помилок, завжди екрануйте не буквено-цифрові символи, якщо хочете вказати відповідність самому символу. В окремому випадку для порівняння з самим символом зворотного сліша, використовуйте запис '\\'.
У випадку, якщо вказано модифікатор PCRE_EXTENDED, пробілові символи шаблону (поза описом символьного класу) ігноруються. Також ігнорується частина рядка, що знаходиться між символом '#' (знову ж таки, що не бере участі в описі символьного класу) і наступним символом перекладу рядка. У такому разі зворотний сліш можна застосовувати як екрануючий символ для вказівки проходження пробельним символів у шаблоні.
Якщо бути більш точним, комбінація cx інтерпретується наступним чином: якщо 'x' - символ нижнього регістру, він перетворюється на верхній регістр. Після цього шостий біт інвертується. Таким чином '\cz' інтерпретується як 1A, тоді як '\c;' набуває шістнадцяткового значення 3B, а '\c;' - 7B.
Після "x" зчитуються ще дві шістнадцяткові цифри (вони можуть бути записані в нижньому регістрі).
Після "\0" зчитуються дві вісімкові цифри. Якщо в записі менше двох цифр, будуть використані всі цифри, що фактично присутні. Таким чином, послідовність "\0\x\07" буде інтерпретована як два бінарних нулі, за якими слідує символ оповіщення (дзвінок). У випадку, якщо ви використовуєте уявленнячисла у вісімковому коді, переконайтеся, що за початковим нулем йдуть дві значущі цифри.
Всередині символьного класу, або якщо отримане значення більше 9 і відповідна кількість попередніх підмасок відсутня, PCRE зчитує до трьох вісімкових цифр, що йдуть за зворотним слешем, і генерує один байт з останніх 8 значних бітів отриманого значення. Усі наступні цифри позначають себе. Наприклад:
Слід пам'ятати, що вісімкові значення, що перевищують 100, слід писати без лідируючого нуля, тому що читається не більше трьох вісімкових цифр.
Усі послідовності, що визначають однобайтне значення, можуть зустрічатися як усередині, так і поза символьними класами. Крім того, всередині символьного класу запис "b" інтерпретується як символ повернення ('backspace', шістнадцятковий код 08). Поза символьним класом вона має інше значення (яке саме, описано нижче).
Третє використання зворотного сліша - вказівка загального типу символів:
\dбудь-яка десяткова цифра\Dбудь-який символ, крім десяткової цифри\sбудь-який символ пробілу\Sбудь-який непробільний символ\wБудь-який символ, що утворює "слово"\WБудь-який символ, що не утворює "слово"
Кожна пара таких спеціальних послідовностей ділить повну множину всіх символів на дві множини, що не перетинаються. Будь-який символ відповідає одній і тільки одній множині з пари.
"word" символ - це довільна цифра, буква або символ підкреслення, простіше кажучи, будь-який символ, який може бути частиною слова в Perl. Визначення літер та цифр управляється символьними таблицями, з якими PCRE було зібрано. І, як наслідок, ці набори можуть відрізнятися у різних локалізованих дистрибутивах. Наприклад, влокалі "fr" (Франція) деякі символи з кодом вище 128 використовуються для запису ударних символів і відповідно відповідають масці \w.
Наведені вище типи символів можуть застосовуватися як усередині, так і поза символьними класами, і відповідають одному символу даного типу.
Четверте використання зворотного слеша - нотація деяких формальних тверджень, що описують умови щодо розташування особливих позицій у рядку і абсолютно не зачіпають самі символи. Такими керуючими послідовностями є:
\bмежа слова\Bне є межею слова\Aпочаток даних (незалежно від багаторядкового режиму)\Zкінець даних або позиція перед останнім символом рядка, якщо це символ перекладу рядка (незалежно від багаторядкового режиму)\zкінець даних (незалежно від багаторядкового режиму)
Описані вище послідовності не можуть зустрічатися в символьних класах (за винятком комбінації '\b', яка всередині класу означає символ повернення 'backspace').
Кордоном слова вважається така позиція в рядку, в якій з поточного та наступного символу тільки один відповідає \w (тобто один з них відповідає \w, а інший \W). Початок або кінець рядка також відповідають межі слова у випадку, якщо перший або відповідно останній символ збігається з \w.
Спеціальні послідовності \A, \Z і \z відрізняються від загальновживаних метасимволів початку рядка '^' і кінця рядка '$' тим, що їхня поведінка не залежить від наявності або відсутності модифікаторів. На них ніяк не впливають опції PCRE_MULTILINE та PCRE_DOLLAR_ENDONLY. Різниця між \Z та \Z у тому, що \Z відповідає позиції перед останнім символом у разі, якщо останній символ - переклад рядка. В той час як\z відповідає виключно кінцю даних.