text: Пример использования std::match_results: const char *reg_esp = ""; // Список символов-разделителей. // то же самое можно сделать, используя "сырые" строки: // const char *reg_esp = R"()"; std::regex rgx(reg_esp); // 'regex' - это экземпляр шаблонного класса // 'basic_regex' с шаблонным параметром 'char'. std::cmatch match; // 'cmatch' - это экземпляр шаблонного класса // 'match_results' с шаблонным параметром 'const char *'. const char *target = "Unseen University - Ankh-Morpork"; // Фиксирует все слова строки 'target' разделённые символами из 'reg_esp'. if( std::regex_search( target, match, rgx ) ) { // Если слова, разделённые заданными символами присутствуют в строке. const size_t n = match.size(); for( size_t a = 0; a < n; a++ ) { std::string str( match.first, match.second ); std::cout << str << "\n"; } } Обратите внимание, что требуется использование двойной обратной косой черты, так как C++ использует обратную косую черту для экранирования символов.