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

Класс smatch

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

Синтаксис

#include <regex> std::smatch match;

Пример

Давайте найдем первое число в строке и выведем полное совпадение и первую захваченную группу:

#include <iostream> #include <regex> #include <string> using namespace std; int main() { string str = "abc123def"; regex re("([0-9]+)"); smatch match; if (regex_search(str, match, re)) { cout << match[0] << endl; cout << match[1] << endl; } return 0; }

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

123 123

Пример

Давайте переберем все совпадения в строке с помощью итераторов sregex_iterator и выведем каждое из них:

#include <iostream> #include <regex> #include <string> using namespace std; int main() { string str = "a1 b2 c3"; regex re("([a-z])([0-9])"); sregex_iterator it(str.begin(), str.end(), re); sregex_iterator end; while (it != end) { smatch match = *it; cout << match[0] << endl; it++; } return 0; }

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

"a1" "b2" "c3"

Пример

Давайте проверим, найдено ли совпадение, с помощью метода empty и выведем количество совпадений:

#include <iostream> #include <regex> #include <string> using namespace std; int main() { string str = "abcde"; regex re("([0-9]+)"); smatch match; if (regex_search(str, match, re)) { cout << match.size() << endl; } else { cout << "no match" << endl; } return 0; }

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

"no match"

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

  • класс smatch,
    который хранит результаты поиска совпадений
  • метод str,
    который возвращает совпадение в виде строки
  • метод position,
    который возвращает позицию совпадения
  • метод length,
    который возвращает длину совпадения
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить