Следите за новинками
в нашем Telegram канале. Жми, чтобы подписаться:)
⊗cpSpRgMSeP 22 of 696 menu
◀ ▶

Карманы при поиске в C++

Часто при поиске совпадения удобно разложить подстроку на так называемые карманы. Они представляют собой способ разбить найденное на отдельные части. Для их использования нужно заключить часть регулярки в круглые скобки.

Для примера возьмем такую строку:

std::string txt = "123 456";

Разложим подстроки с числами по карманам. Для этого напишем следующую регулярку:

std::regex re(R"((\d+) (\d+))"); std::smatch res; std::regex_search(txt, res, re);

В результате мы получим объект std::smatch. В его элементе с индексом 1 будет лежать первый карман, в элементе с индексом 2 - второй карман, а в элементе с индексом 0 - все найденное (так называемый нулевой карман):

std::cout << res.str(0) << "\n"; // '123 456' - найденное std::cout << res.str(1) << "\n"; // '123' - 1 карман std::cout << res.str(2) << "\n"; // '456' - 2 карман

Дана строка, содержащая домен:

std::string txt = "sss domain.ru zzz";

Найдите этот домен и положите его имя в первый карман, а зону - во второй.

Дана строка, содержащая дату:

std::string txt = "31.12.2025";

Положите день в первый карман, месяц - во второй, а год - в третий.

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить