РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
427 of 815 menu

Класс ssub_match

Класс ssub_match - это тип подсовпадения, который используется в библиотеке <regex> для представления отдельной захваченной группы при работе со строками типа std::string. Объект ssub_match хранит информацию о найденной подстроке: позицию начала, длину и саму подстроку. Получить объект ssub_match можно через объект smatch, который возвращается функциями regex_search и regex_match. Класс поддерживает оператор преобразования к типу std::string, методы str, length и compare.

Синтаксис

#include <regex> std::ssub_match sub = match[i]; std::string s = sub.str(); size_t len = sub.length();

Пример

Давайте найдём первое число в строке "abc123def456" с помощью регулярного выражения и выведем найденное подсовпадение через метод str:

#include <iostream> #include <regex> #include <string> using namespace std; int main() { string str = "abc123def456"; regex re("(\\d+)"); smatch match; if (regex_search(str, match, re)) { ssub_match sub = match[1]; cout << sub.str() << endl; } return 0; }

Результат выполнения кода:

123

Пример

Давайте переберём все числа в строке "abc123def456" с помощью sregex_iterator и для каждого подсовпадения выведем его длину через метод length:

#include <iostream> #include <regex> #include <string> using namespace std; int main() { string str = "abc123def456"; regex re("(\\d+)"); for (sregex_iterator it(str.begin(), str.end(), re), end; it != end; ++it) { ssub_match sub = (*it)[1]; cout << sub.str() << " : " << sub.length() << endl; } return 0; }

Результат выполнения кода:

"123 : 3" "456 : 3"

Пример

Давайте получим объект ssub_match и преобразуем его к типу std::string с помощью оператора преобразования, а также проверим совпадение через метод compare:

#include <iostream> #include <regex> #include <string> using namespace std; int main() { string str = "abc123def456"; regex re("(\\d+)"); smatch match; if (regex_search(str, match, re)) { ssub_match sub = match[1]; string s = sub; cout << s << endl; cout << sub.compare("123") << endl; } return 0; }

Результат выполнения кода:

123 0

Смотрите также

  • класс cmatch,
    который хранит результаты поиска для строк C-стиля
  • функция regex_search,
    которая ищет первое совпадение в строке
  • функция regex_match,
    которая проверяет полное совпадение строки с шаблоном
  • класс regex_iterator,
    который перебирает все совпадения в строке
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить