Метасимволы в регулярных выражениях
Регулярное выражение – это шаблон, по которому выполняется поиск соответствующего фрагмента текста. Язык описания регулярных выражений состоит из символов двух видов: обычных символов и метасимволов. Обычный символ представляет в выражении сам себя, а метасимвол – некоторый класс символов.
Рассмотрим наиболее употребительные метасимволы:
Класс символов | Описание | Пример |
. | Любой символ, кроме \n. | Выражение c.t соответствует фрагментам: cat, cut, c#t, c{t и т.д. |
[] | Любой одиночный символ из последовательности, записанной внутри скобок. Допускается использование диапазонов символов. | Выражение c[aui]t соответствует фрагментам: cat, cut, cit. Выражение c[a-c]t соответствует фрагментам: cat, cbt, cct. |
[^] | Любой одиночный символ, не входящий в последовательность, записанную внутри скобок. Допускается использование диапазонов символов. | Выражение c[^aui]t соответствует фрагментам: cbt, cct, c2t и т.д. Выражение c[^a-c]t соответствует фрагментам: cdt, cet, c%t и т.д. |
\w | Любой алфавитно-цифровой символ. | Выражение c\wt соответствует фрагментам: cbt, cct, c2t и т.д., но не соответствует фрагментам c%t, c{t и т.д. |
\W | Любой не алфавитно-цифровой символ. | Выражение c\Wt соответствует фрагментам: c%t, c{t, c.t и т.д., но не соответствует фрагментам cbt, cct, c2t и т.д. |
\s | Любой пробельный символ. | Выражение \s\w\w\w\s соответствует любому слову из трех букв, окруженному пробельными символами. |
\S | Любой не пробельный символ. | Выражение \s\S\S\S\s соответствует любым трем непробельным символам, окруженным пробельными. |
\d | Любая десятичная цифра | Выражение c\dt соответствует фрагментам: c1t, c2t, c3t и т.д. |
\D | Любой символ, не являющийся десятичной цифрой | Выражение c\Dt не соответствует фрагментам: c1t, c2t, c3t и т.д. |
Кроме метасимволов, обозначающие классы символов, могут применяться уточняющие метасимволы:
Уточняющие символы | Описание |
^ | Фрагмент, совпадающий с регулярными выражениями, следует искать только в начале строки |
$ | Фрагмент, совпадающий с регулярными выражениями, следует искать только в конце строки |
\А | Фрагмент, совпадающий с регулярными выражениями, следует искать только в начале многострочной строки |
\Z | Фрагмент, совпадающий с регулярными выражениями, следует искать только в конце многострочной строки |
\b | Фрагмент, совпадающий с регулярными выражениями, начинается или заканчивается на границе слова, т.е. между символами, соответствующими метасимволам \w и \W |
\B | Фрагмент, совпадающий с регулярными выражениями, не должен встречаться на границе слов |
В регулярных выражениях часто используются повторители – метасимволы, которые располагаются непосредственно после обычного символа или группы символов и задают количество его повторений в выражении.
Повторители | Описание | Пример |
* | Ноль или более повторений предыдущего элемента | Выражение ca*t соответствует фрагментам: ct, cat, caat, caaat и т.д. |
+ | Одно или более повторений предыдущего элемента | Выражение ca+t соответствует фрагментам: cat, caat, caaat и т.д. |
? | Не более одного повторения предыдущего элемента | Выражение ca?t соответствует фрагментам: ct, cat. |
{n} | Ровно n повторений предыдущего элемента | Выражение ca{3}t соответствует фрагменту: cаааt. Выражение (cat){2} соответствует фрагменту: cаtcat. |
{n,} | По крайней мере n повторений предыдущего элемента | Выражение ca{3,}t соответствует фрагментам: cаааt, caaaat, caaaaaaat и т.д. Выражение (cat){2,} соответствует фрагментам: cаtcat, catcatcat и т.д. |
{n, m} | От n до m повторений предыдущего элемента | Выражение ca{2, 4}t соответствует фрагментам: cааt, caaat, caaaat. |
Регулярное выражение записывается в виде строкового литерала, причем перед строкой необходимо ставить символ @, который говорит о том, что строку нужно будет рассматривать и в том случае, если она будет занимать несколько строчек на экране. Однако символ @ можно не ставить, если в качестве шаблона используется шаблон без метасимволов.
Замечание. Если нужно найти какой-то символ, который является метасимволом, например, точку, можно это сделать защитив ее обратным слэшем. Т.е. просто точка означает любой одиночный символ, а \. означает просто точку.
Примеры регулярных выражений:
· слово rus – @"rus" или "rus"
· номер телефона в формате xxx-xx-xx – @"\d\d\d-\d\d-\d\d" или @"\d{3}(-\d\d){2}"
· номер автомобиля - @"[A-Z]\d{3}[A-Z]{2}\d{2,3}RUS"
Задания. Запишите регулярное выражение, соответствующее:
1. дате в формате дд.мм.гг или дд.мм.гггг
2. времени в формате чч.мм или чч:мм
3. целому числу (со знаком и без)
4. вещественному числу (со знаком и без, с дробной частью и без, с целой частью и без)
Дата добавления: 2017-06-02; просмотров: 523;