Студопедия Главная Случайная страница Обратная связь

Разделы: Автомобили Астрономия Биология География Дом и сад Другие языки Другое Информатика История Культура Литература Логика Математика Медицина Металлургия Механика Образование Охрана труда Педагогика Политика Право Психология Религия Риторика Социология Спорт Строительство Технология Туризм Физика Философия Финансы Химия Черчение Экология Экономика Электроника

Регулярные выражения





Регулярные выражения предназначены для обработки текстовой информации и

обеспечивают:

- эффективны й поиск в тексте по заданному шаблону;

- редактирование, замену и удаление подстрок;

- формирование итоговых отчетов по результатам работы с текстом.

С помощью регулярных выражений удобно обрабатывать, например, файлы в формате HTML, файлы журналов ил и длинные текстовые файлы. Для поддержки регулярных выражений в библиотеку.NE T включены классы, объединенные в пространство имен System.Text.RegularExpressions.

Метасимволы

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

Например, регулярное выражение для поиска в тексте фрагмента «Вася» заполняется с помощью четырех обычных символов Вася, а выражение для поиска двух цифр, идущих подряд, состоит из двух метасимволов \d\d.

С помощью комбинаций метасимволов можно описывать сложные шаблоны для поиска. Например, можно описать шаблон для IP-адреса, адреса электронной почты, различных форматов даты, заголовков определенного вида и т. д.

В таблице 3.1 описаны наиболее употребительные метасимволы, представляющие собой классы символов.

 

Таблица 3.1 Метасимволы, используемые для составления шаблона регулярных выражений

Символ Интерпретация
Escape-последовательности
\b \t \r \n При использовании его в квардратный скобках соответствует символу " обратная косая черта" с кодом
Классы символов
. Соответствует любому символу, за исключением символа конца строки
[aeiou] Соответствует набору символов из множества, заданного в квадратных скобках
[^aeiou] Отрицание. Соответствует любому символу, за исключением символов, заданных в квадратных скобках
[0=9a-fA-F] Задание диапазона символов, упорядоченных по коду. Так, 0-9 задает любую цифру
\w Множество символов, используемых при задании идентификаторов - большие и малые символы латиницы, цифры и знак подчеркивания
\W Любой символ кроме букв, цифр и знака подчеркивания
\s Соответствует пробельным символам (символ пробела, табуляции, перевода строки, новой страницы)
\S Любой символ, не являющийся пробелом
\d Соответствует любому символу из множества цифр
\D Любой символ кроме десятичной цифры
\b Соответствие следует искать на границе слова (т.е. между символами, заданными \w и \W)
\B Соответствие следует искать в любом месте, за исключением границы слова
Операции (повторители / модификаторы)
* Задает ноль или более соответствий, например, \w* или (abc)*
+ Задает одно или более соответствий, например, \w+ или (abc)+
? Задает ноль или одно соответствие, например, \w? или (abc)?
{n} Задает в точности n соответствий, например, \w{2}
{n, m} Задает по меньшей мере n, но не более m соответствий, например, (abc){2, 5}
Группирование
(? < Name>) При обнаружении соответствия выражению, заданному в круглых скобках, создается именованная группа, которой дается имя Name. Например, (? < tel> \d{7}). При обнаружении последовательности из семи цифр будет создана группа с именем tel
() Разбивают регулярное выражение на группы. Для каждого выражения, заключенного в круглые скобки, содается группа, автоматически получающая номер. Полному регулярному выражению соответствуюет группа с номером 0. Например, выражение (\w)\1 используется для поиска сдвоенных символов
Уточняющие метасимволы
^ Соответствие следует искать только в начале строки
$ Соответствие следует искать только в конце строки
\A Соответствие следует искать только в начале многострочной строки
\Z Соответствие следует искать только в конце многострочной строки

 

Помимо рассмотренных элементов регулярных выражений можно использовать конструкцию выбора из нескольких элементов. Варианты выбора перечисляются через вертикальную черту. Например, если требуется определить, присутствует ли в тексте хотя бы один элемент из списка «cat», «dog» и «horse», можно использовать выражение cat|dog|horse

При поиске используется так называемый «ленивый» алгоритм, по которому поиск прекращается при нахождении самого короткого из возможных фрагментов, совпадающих с регулярным выражением.

Если требуется описать в выражении обычный символ, совпадающий с каким-либо

метасимволом, его предваряют обратной косой чертой. Так, для поиска в тексте символа точки следует записать \., а для поиска косой черты - \\.

Например, для поиска в тексте имени файла cat.doc следует использовать регулярное выражение cat\.doc. Символ «точка» экранируется обратной косой чертой, для того, чтобы он воспринимался не как метасимвол «любой символ» (в том числе и точка!), а непосредственно.

Для группирования элементов выражения используются круглые скобки. Группирование применяется во многих случаях, например, если требуется задать повторитель не для отдельного символа, а для группы символов. Кроме того, группирование служит для запоминания в некоторой переменной фрагмента текста, совпавшего с выражением, заключенным в скобки. Имя переменной задается в угловых скобках или апострофах:

(? < имя_переменной> фрагмент_выражения)

Фрагмент текста, совпавший при поиске с фрагментом регулярного выражения, заносится в переменную с заданным именем. Пусть, например, требуется выделить из текста номера телефонов, записанных в виде nnn-rm-nn. Регулярное выражение для поиска номера можно записать так:

(? < num> \d\d\d-\d\d-\d\d)

Обратите внимание на то, что метасимволы регулярных выражений не совпадают с метасимволами, которые используются в шаблонах имен файлов, таких как *.doc.

При анализе текста в переменную с именем num будут последовательно записываться найденные номера телефонов.

Рассмотрим еще один вариант применения группирования — для формирования обратных ссылок. Все конструкции, заключенные в круглые скобки, автоматически нумеруются, начиная с 1. Эти номера, предваренные обратной косой чертой, можно использовать для ссылок на соответствующую конструкцию. Например, выражение (\w)\1 используется для поиска сдвоенных символов в словах (mass, cooperate).

Круглые скобки могут быть вложенными, при этом номер конструкции определяется порядком открывающей скобки в выражении. Примеры:

(Вася)\s+(должен)\s+(? < sum> \d+)\spy6\.\s+Hy что же ты, \1

В этом выражении три подвыражения, заключенных в скобки. Ссылка на первое из них выполняется в конце выражения. С этим выражением совпадут, например, фрагменты

Вася должен 5 руб. Ну что же ты, Вася

Вася должен 53459 руб. Ну что же ты, Вася

Выражение, задающее IP-адрес:

((\d{1.3}\.){3}\d{1.3})

Адрес состоит из четырех групп цифр, разделенных точками. Каждая группа может включать от одной до трех цифр. Примеры IP-адресов: 212.46.197.69, 212.194.5.106, 209.122.173.160. Первая группа, заключенная в скобки, задает весь адрес. Ей присваивается номер 1. В нее вложены вторые скобки, определяющие границы для повторителя {3}.

Переменную, имя которой задается внутри выражения в угловых скобках, также можно использовать для обратных ссылок в последующей части выражения. Например, поиск двойных символов в словах можно выполнить с помощью выражения (? < s> \w)\1< s>, где s — имя переменной, в которой запоминается символ, \w — элемент синтаксиса.

В регулярное выражение можно помещать комментарии. Поскольку выражения обычно проще писать, чем читать, это — очень полезная возможность. Комментарий либо помещается внутрь конструкции (? #), либо располагается, начиная от символа # до конца строки.







Дата добавления: 2014-11-10; просмотров: 711. Нарушение авторских прав; Мы поможем в написании вашей работы!




Шрифт зодчего Шрифт зодчего состоит из прописных (заглавных), строчных букв и цифр...


Картограммы и картодиаграммы Картограммы и картодиаграммы применяются для изображения географической характеристики изучаемых явлений...


Практические расчеты на срез и смятие При изучении темы обратите внимание на основные расчетные предпосылки и условности расчета...


Функция спроса населения на данный товар Функция спроса населения на данный товар: Qd=7-Р. Функция предложения: Qs= -5+2Р,где...

Разновидности сальников для насосов и правильный уход за ними   Сальники, используемые в насосном оборудовании, служат для герметизации пространства образованного кожухом и рабочим валом, выходящим через корпус наружу...

Дренирование желчных протоков Показаниями к дренированию желчных протоков являются декомпрессия на фоне внутрипротоковой гипертензии, интраоперационная холангиография, контроль за динамикой восстановления пассажа желчи в 12-перстную кишку...

Деятельность сестер милосердия общин Красного Креста ярко проявилась в период Тритоны – интервалы, в которых содержится три тона. К тритонам относятся увеличенная кварта (ув.4) и уменьшенная квинта (ум.5). Их можно построить на ступенях натурального и гармонического мажора и минора.  ...

Виды сухожильных швов После выделения культи сухожилия и эвакуации гематомы приступают к восстановлению целостности сухожилия...

КОНСТРУКЦИЯ КОЛЕСНОЙ ПАРЫ ВАГОНА Тип колёсной пары определяется типом оси и диаметром колес. Согласно ГОСТ 4835-2006* устанавливаются типы колесных пар для грузовых вагонов с осями РУ1Ш и РВ2Ш и колесами диаметром по кругу катания 957 мм. Номинальный диаметр колеса – 950 мм...

Философские школы эпохи эллинизма (неоплатонизм, эпикуреизм, стоицизм, скептицизм). Эпоха эллинизма со времени походов Александра Македонского, в результате которых была образована гигантская империя от Индии на востоке до Греции и Македонии на западе...

Studopedia.info - Студопедия - 2014-2024 год . (0.01 сек.) русская версия | украинская версия