regex r( | Параметр представляет регулярное выражение и может быть строкой, парой итераторов, обозначающих диапазон символов, указателем на символьный массив с нулевым символом в конце, указателем на символ и количеством или списком символов в скобках, f — это флаги, определяющие выполнение объекта. Флаги f устанавливаются исходя из упомянутых ниже значений. Если флаги f не определены, по умолчанию применяется ECMAScript |
r1 = | Заменяет регулярное выражение в r1 регулярным выражением . — это регулярное выражение, которое может быть другим объектом класса regex, строкой, указателем на символьный массив с нулевым символом в конце или списком символов в скобках |
r1.assign( | То же самое, что и оператор присвоения (=). Параметр и необязательный флаг 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 будет содержать подробности о том, где оно найдено.