Функция regex_search(): поиск соответствия шаблону

Функция regex_search() аналогична функции regex_match(), но выполняет сравнение с любым фрагментом строки, поэтому для проверки полного соответствия шаблону нужно указывать привязки к началу и концу строки. Функция возвращает значение true, если в строке существует фрагмент соответствующий шаблону регулярного выражения, и значение false — в противном случае. Пример проверки полного соответствия шаблону:

std::regex rgx("^[0-9]+$");
if (std::regex_search("123456", rgx))
   std::cout << "Строка соответствует шаблону" << std::endl;
else
   std::cout << "Не соответствует" << std::endl;

Если привязки к началу и концу строки не указать, то первое число в строке будет соответствовать шаблону:

std::regex rgx("[0-9]+");
std::cmatch m;
std::cout << std::regex_search("s245 52", m, rgx) << std::endl; // 1
if (!m.empty()) {
   std::cout << m[0] << std::endl; // 245
}

Основные прототипы функции regex_search() (полный список смотрите в документации):

template<typename _Ch_type, class _Rx_traits>
   bool regex_search(const _Ch_type *cstr,
                     const basic_regex<_Ch_type, _Rx_traits> &re,
                     match_flag_type flags=match_default);
template<typename _Ch_traits, typename _Str_allocator,
         typename _Ch_type, typename _Rx_traits>
   bool regex_search(
      const basic_string<_Ch_type, _Ch_traits, _Str_allocator> &str,
      const basic_regex<_Ch_type, _Rx_traits> &re,
      match_flag_type flags=match_default);
template<typename _Bi_iter, typename _Ch_type, typename _Rx_traits>
   bool regex_search(_Bi_iter first, _Bi_iter last,
                     const basic_regex<_Ch_type, _Rx_traits> &re,
                     match_flag_type flags=match_default);
template<typename _Ch_type, typename _Alloc, typename _Rx_traits>
   bool regex_search(const _Ch_type *cstr,
                     match_results<const _Ch_type*, _Alloc> &match,
                     const basic_regex<_Ch_type, _Rx_traits> &re,
                     match_flag_type flags=match_default);
template<typename _Ch_traits, typename _Ch_alloc,
         typename _Alloc, typename _Ch_type, typename _Rx_traits>
   bool regex_search(
      const basic_string<_Ch_type, _Ch_traits, _Ch_alloc> &str,
      match_results<typename basic_string<_Ch_type,
               _Ch_traits, _Ch_alloc>::const_iterator, _Alloc> &match,
      const basic_regex<_Ch_type, _Rx_traits> &re,
      match_flag_type flags=match_default);

Все параметры соответствуют одноименным параметрам в функции regex_match() (см. разд. 10.3).

Учебник C++ (MinGW-W64)
Учебник C++ (MinGW-W64) в формате PDF

Помощь сайту

ЮMoney (Yandex-деньги): 410011140483022

ПАО Сбербанк:
Счет: 40817810855006152256
Реквизиты банка:
Наименование: СЕВЕРО-ЗАПАДНЫЙ БАНК ПАО СБЕРБАНК
Корреспондентский счет: 30101810500000000653
БИК: 044030653
КПП: 784243001
ОКПО: 09171401
ОКОНХ: 96130
Скриншот реквизитов