regex r(re) regex r(re, f)Параметр re представляет регулярное выражение и может быть строкой, парой итераторов, обозначающих диапазон символов, указателем на символьный массив с нулевым символом в конце, указателем на символ и количеством или списком символов в скобках, f — это флаги, определяющие выполнение объекта. Флаги f устанавливаются исходя из упомянутых ниже значений. Если флаги f не определены, по умолчанию применяется ECMAScript
r1 = reЗаменяет регулярное выражение в r1 регулярным выражением re. re — это регулярное выражение, которое может быть другим объектом класса regex, строкой, указателем на символьный массив с нулевым символом в конце или списком символов в скобках
r1.assign(re, f)То же самое, что и оператор присвоения (=). Параметр re и необязательный флаг f имеют тот же смысл, что и соответствующие аргументы конструктора regex()
r.mark_count()Количество подвыражений (рассматриваются в разделе 17.3.3) в объекте r
r.flags()Возвращает набор флагов для объекта r
Примечание: конструкторы и операторы присвоения могут передавать исключение типа regex_error.
Флаги, применяемые при определении объекта класса regex. Определены в типах regex и regex_constants::syntax_option_type
icaseИгнорировать регистр при поиске соответствия
nosubsНе хранить соответствия подвыражений
optimizeПредпочтение скорости выполнения скорости создания
ECMAScriptИспользование грамматики согласно ЕСМА-262
basicИспользование базовой грамматики регулярных выражений POSIX
extendedИспользование расширенной грамматики регулярных выражения POSIX
awkИспользование грамматики POSIX версии языка awk
grepИспользование грамматики POSIX версии языка grep
egrepИспользование грамматики POSIX версии языка egrep

Начнем с определения строки для хранения искомого регулярного выражения. Регулярное выражение [^с] означает любой символ, отличный от символа 'c', a [^c]ei — любой такой символ, сопровождаемый символами 'ei'. Эта схема описывает строки, содержащие только три символа. Необходимо найти целое слово, содержащее эту схему. Для соответствия слову необходимо регулярное выражение, которое будет соответствовать символам, расположенным прежде и после заданной трехсимвольной схемы.

Это регулярное выражение состоит из любого количества символов, сопровождаемых первоначальной трехсимвольной схемой и любым количеством дополнительных символов. По умолчанию объекты класса regex используют язык регулярных выражений ECMAScript. На языке ECMAScript схема [[:alpha:]] соответствует любому алфавитному символу, а символы + и * означают "один или несколько" и "нуль или более" соответственно. Таким образом, схема [[:alpha:]]* будет соответствовать любому количеству символов.

Регулярное выражение, сохраненное в строке pattern, используется для инициализации объекта r класса regex. Затем определяется строка, которая будет использована для проверки регулярного выражения. Строка test_str инициализируется словами, которые соответствуют схеме (например, "freind" и "theif"), и словами, которые ей не соответствуют (например, "receipt" и "receive"). Определим также объект results класса smatch, передаваемый функции regex_search(). Если соответствие будет найдено, то объект results будет содержать подробности о том, где оно найдено.

Перейти на страницу:

Похожие книги