Функции regex_match()
и regex_search()
определяют, соответствует ли заданная последовательность символов предоставленному объекту класса regex
. Функция regex_match()
возвращает значение true
, если вся исходная последовательность соответствует выражению; функция regex_search()
возвращает значение true
, если в исходной последовательности выражению соответствует подстрока. Есть также функция regex_replace()
, описываемая в разделе 17.3.4.
Аргументы функции regex
описаны в табл. 17.5. Эти функции возвращают логическое значение и допускают перегрузку: одна версия получает дополнительный аргумент типа smatch
. Если он есть, эти функции сохраняют дополнительную информацию об успехе обнаружения соответствия в предоставленном объекте класса smatch
.
17.3.1. Использование библиотеки регулярных выражений
В качестве довольно простого примера рассмотрим поиск слов, нарушающих известное правило правописания "
//
string pattern("[^с]ei");
//
pattern = "[[:alpha:]]*" + pattern + "[[:alpha:]]*";
regex r(pattern); //
smatch results; //
//
//
string test_str = "receipt freind theif receive";
//
if (regex_search(test_str, results, r)) //
cout << results.str() << endl; //
Таблица 17.5. Аргументы функций regex_search()
и regex_match()
Обратите внимание: функции возвращают логическое значение, означающее, было ли найдено соответствие. | |
---|---|
( | Поиск регулярного выражения объекта r класса regex в символьной последовательности . Последовательность может быть строкой, парой итераторов, обозначающих диапазон, или указателем на символьный массив с нулевым символом в конце, m — это объект соответствия, используемый для хранения подробностей о соответствии. Типы объекта m и последовательности должны быть совместимы (см. раздел 17.3.1). mft — это необязательное значение regex_constants::match_flag_type . Это значение, описанное в табл. 17.13, влияет на процесс поиска соответствия |
Таблица 17.6. Операции с классом regex
(и wregex
)