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

Класс cmatch

Класс cmatch используется для хранения результатов поиска по регулярному выражению, когда исходная строка представлена в виде C-строки (указателя на 'char'). Он является специализацией шаблона match_results для итераторов типа const char*. После выполнения функций regex_match или regex_search объект cmatch содержит информацию обо всём найденном совпадении и обо всех захваченных подвыражениях. Доступ к отдельным совпадениям осуществляется через оператор [] или метод str.

Синтаксис

#include <regex> std::cmatch match;

Пример

Давайте найдём первое число в строке "abc123def" и выведем его на экран:

#include <iostream> #include <regex> using namespace std; int main() { const char* str = "abc123def"; cmatch res; regex reg("[0-9]+"); if (regex_search(str, res, reg)) { cout << res.str() << endl; } return 0; }

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

123

Пример

Давайте воспользуемся захватывающими группами, чтобы извлечь отдельно буквенную и цифровую части строки:

#include <iostream> #include <regex> using namespace std; int main() { const char* str = "abc123def"; cmatch res; regex reg("([a-z]+)([0-9]+)"); if (regex_search(str, res, reg)) { cout << "all: " << res.str(0) << endl; cout << "letters: " << res.str(1) << endl; cout << "digits: " << res.str(2) << endl; } return 0; }

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

"all: abc123" "letters: abc" "digits: 123"

Пример

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

#include <iostream> #include <regex> using namespace std; int main() { const char* str = "abc123def"; cmatch res; regex reg("([a-z]+)([0-9]+)([a-z]+)"); if (regex_search(str, res, reg)) { cout << "size: " << res.size() << endl; cout << "position: " << res.position(0) << endl; cout << "length: " << res.length(0) << endl; } return 0; }

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

"size: 4" "position: 0" "length: 9"

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

  • функция regex_search,
    которая ищет первое совпадение с регулярным выражением
  • функция regex_match,
    которая проверяет полное совпадение строки с шаблоном
  • класс ssub_match,
    который хранит результат совпадения для std::string
  • класс regex,
    который представляет само регулярное выражение
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить