Метасимволы в регулярных выражениях

Регулярное выражение – это шаблон, по которому выполняется поиск соответствующего фрагмента текста. Язык описания регулярных выражений состоит из символов двух видов: обычных символов и метасимволов. Обычный символ представляет в выражении сам себя, а метасимвол – некоторый класс символов.

Рассмотрим наиболее употребительные метасимволы:

 

Класс символов Описание Пример
. Любой символ, кроме \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; просмотров: 471;


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

Поделитесь с друзьями:

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.006 сек.