Представлення символів у регулярних виразах

Представлення символів за їхнім кодом

ред.

У деяких випадках бажано представляти символи за їхнім кодом.

Представлення Пояснення Кодування
\0n n - вісімкове число від 0 до 377 8-бітне
\xdd d - шістнадцяткова цифра
\udddd 16-бітне (Юнікод)

Керуючі символи

ред.
Представлення Символ Позначення Розшифровка
\t Табуляція HT Horizontal tabulation
\v Вертикальна табуляція VT Vertical tabulation
\r Повернення каретки CR Carriage return
\n Переведення рядка LF Line feed
\f Кінець сторінки FF Form feed
\a Дзвінок BEL Bell character
\e Escape-Символ ESC Escape character
\b Забій

Повинен знаходитися всередині квадратних дужок (інакше інтерпретується як межа слова).

BS Backspace
\cA ... \cZ Ctrl+A ... Ctrl+Z

Наприклад, послідовність \cM\cJ відповідає керуючим символам CR LF.

Еквівалентно \x01 ... \x1A.

Скорочені позначення символьних класів

ред.

Для часто використовуваних символьних класів існують короткі позначення.

Представлення Еквівалент Значення
\d [0-9] Цифра
\D [^\d] Будь-який символ, окрім цифри
\w [A-Za-zА-Яа-я0-9_] Символи, що утворюють «слово» (літери, цифри й символ підкреслення)[1]
\W [^\w] Символи, що не утворюють «слово»
\s [ \t\v\r\n\f] Пробільний символ
\S [^\s] Непробільний символ

Символьні класи POSIX

ред.

Багато діапазонів символів залежать від обраних налаштувань локалізації. POSIX стандартизував оголошення деяких класів і категорій символів, як показано в такій таблиці:

POSIX-Клас Еквівалент Значення
[:upper:] [A-Z] Символи верхнього регістру
[:lower:] [a-z] Символи нижнього регістру
[:alpha:] [[:upper:][:lower:]] Літери
[:digit:] [0-9], тобто \d Цифри
[:xdigit:] [[:digit:]A-Fa-f] Шістнадцяткові цифри
[:alnum:] [[:alpha:][:digit:]] Літери й цифри
[:word:] [[:alnum:]_], тобто \w Символи, що утворюють «слово»
[:punct:] [-!"#$%&'()*+,./:;<=>?@[\\\]_'{|}~] Знаки пунктуації
[:blank:] [ \t] Пробіл і табуляція
[:space:] [[:blank:]\v\r\n\f], тобто \s Пробільні символи
[:cntrl:] [\x00-\x1F\x7F] Керуючі символи
[:graph:] [\x21-\x7E] Друковані символи
[:print:] [\x20-\x7E], тобто [[:graph:] ] Друковані символи із пробілом

Використання класу можливо лише всередині квадратних дужок (приклад частої помилки - ^[:upper:]il+$ замість ^[[:upper:]]il+$).

Примітки

ред.
  1. Зазначений еквівалент неповний, тому що в діапазон входять усі літери всіх мов.

Див. також

ред.

Література

ред.
  • Фридл, Дж. Регулярные выражения. — Спб. : «Питер», 2001. — 352 с. — (Библиотека программиста) — ISBN 5-318-00056-8.
  • Смит, Билл. Методы и алгоритмы вычислений на строках (regexp) = Computing Patterns in Strings. — М. : «Вильямс», 2006. — 496 с. — ISBN 0-201-39839-7.
  • Форта, Бен. Освой самостоятельно регулярные выражения. 10 минут на урок = Sams Teach Yourself Regular Expressions in 10 Minutes. — М. : «Вильямс», 2004. — 192 с. — ISBN 0-672-32566-7.