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
будет содержать подробности о том, где оно найдено.