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




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

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

Базовый набор для конструирования регулярных выражений образуют три регулярных операции:

· объединение (|);

· конкатенация;

· итерация (*? + {}).

Операция объединения обеспечивает возможность выбора одной из двух альтернатив. Она обозначается знаком | и имеет смысл логического оператора ИЛИ, обеспечивая выбор одной из двух возможных альтернатив: первая из них указывается слева от знака операции, вторая – справа.

Операция конкатенации заключается в слиянии символов шаблона в единую цепочку (последовательность литералов). В регулярных выражениях знак конкатенации как таковой отсутствует. Реализуется конкатенация путем последовательного написания объединяемых символов без пробелов и иных специальных символов.

Операция итерации обеспечивает повторение символа или слова произвольное число раз (от нуля до бесконечности).

 

Общие сведения о регулярных выражениях

Элементы регулярных выражений

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

Существует международный стандарт POSIX который определяет базовый (BRE) и расширенный (ERE) наборы метасимволов в регулярных выражениях.

В расширенный набор метасимволов включены:

$. '' * [ ] () ^ | \ +?

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

В особую группу символов входит пробел. Они не может быть использован в регулярных выражениях как обычный символ в виду особенности его интерпретации как знака-разделителя.

 

Литералы и литеральные константы в регулярных выражениях

В простейшем случае регулярное выражением может состоять только из текстовых символов, например,

UNIX

Формально к буквам данного выражения применяется команда конкатенации (слияния), знак которой опущен между буквами слова. Данному регулярному выражению будет соответствовать последовательность букв U, N, I и X, расположенных в том же порядке, что и в регулярном выражении.

Наряду с литералами в регулярных выражениях могут быть использованы литеральные константы. Обычно они используются для включения в состав выражения неотображаемых символов. Например, литеральная константа \n обозначает перевод строки, а \t – горизонтальную табуляцию.

Экранирование метасимволов

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

3\.14

соответствует поиску последовательности символов 3.14 (в регулярных выражениях метасимвол. соответствует произвольному символу).

Экранирование также может быть использовано для включения в состав регулярного выражения символа пробела. Включение пробела в состав регулярных выражений непосредственно запрещено, так как пробел будет интерпретирован командой как окончание выражения, первая его часть будет отнесена к шаблону, а последующая (или последующие) – к аргументам команды.

Так, для поиска последовательности символов OS UNIX необходимо задать регулярное выражение

OS\ UNIX

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

C''++''

удовлетворяет поиску последовательности символов C++, в которой метасимволы + теряют свое специальное значение.

Следует отметить, что экранированы могут быть не только специальные символы, то и вся строка. Конечно, экранирование литералов не является обязательным, но допустимо. Так регулярные выражения C\+\+, C''++'' и ''С++'' эквивалентны.

 

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

В таблице 2.1 приведены метасимволы и операторы, используемые в регулярных выражениях.

 

Таблица 2.1



Поделиться:




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

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2019-11-01 Нарушение авторских прав и Нарушение персональных данных


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