Функции regex_match() и regex_search() определяют, соответствует ли заданная последовательность символов предоставленному объекту класса regex. Функция regex_match() возвращает значение true, если вся исходная последовательность соответствует выражению; функция regex_search() возвращает значение true, если в исходной последовательности выражению соответствует подстрока. Есть также функция regex_replace(), описываемая в разделе 17.3.4.

Аргументы функции regex описаны в табл. 17.5. Эти функции возвращают логическое значение и допускают перегрузку: одна версия получает дополнительный аргумент типа smatch. Если он есть, эти функции сохраняют дополнительную информацию об успехе обнаружения соответствия в предоставленном объекте класса smatch.

<p>17.3.1. Использование библиотеки регулярных выражений</p>

В качестве довольно простого примера рассмотрим поиск слов, нарушающих известное правило правописания "i перед е, кроме как после с":

// найти символы ei, следующие за любым символом, кроме с

string pattern("[^с]ei");

// искомая схема должна присутствовать в целом слове

pattern = "[[:alpha:]]*" + pattern + "[[:alpha:]]*";

regex r(pattern); // создать regex для поиска схемы

smatch results; // определить объект для содержания результатов поиска

// определить строку, содержащую текст, соответствующий и не

// соответствующий схеме

string test_str = "receipt freind theif receive";

// использовать r для поиска соответствия в test_str

if (regex_search(test_str, results, r)) // если соответствие есть

 cout << results.str() << endl; // вывести соответствующее слово

Таблица 17.5. Аргументы функций regex_search() и regex_match()

Обратите внимание: функции возвращают логическое значение, означающее, было ли найдено соответствие.
(seq, m, r, mft) (seq, r, mft)Поиск регулярного выражения объекта r класса regex в символьной последовательности seq. Последовательность seq может быть строкой, парой итераторов, обозначающих диапазон, или указателем на символьный массив с нулевым символом в конце, m — это объект соответствия, используемый для хранения подробностей о соответствии. Типы объекта m и последовательности seq должны быть совместимы (см. раздел 17.3.1). mft — это необязательное значение regex_constants::match_flag_type. Это значение, описанное в табл. 17.13, влияет на процесс поиска соответствия

Таблица 17.6. Операции с классом regexwregex)

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

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