Поделиться через


Класс match_results

Содержит последовательность подстрок соответствия.

Синтаксис

template <class BidIt, class Alloc>
class match_results

Параметры

BidIt
Тип итератора для подстрок соответствия.

Alloc
Тип распределителя для управления хранилищем.

Замечания

Шаблон класса описывает объект, который управляет неизменяемой последовательностью элементов типа sub_match<BidIt> , созданных поиском регулярных выражений. Каждый элемент указывает на часть последовательности, которая соответствует группе захвата, соответствующей этому элементу.

Конструкторы

Конструктор Description
match_results Создает объект.

Определения типов

Введите имя Description
allocator_type Тип распределителя для управления хранилищем.
char_type Тип элемента.
const_iterator Тип постоянного итератора для подстрок соответствия.
const_reference Тип постоянной ссылки на элемент.
difference_type Тип разницы итератора.
iterator Тип итератора для подстрок соответствия.
reference Тип ссылки на элемент.
size_type Тип числа подстрок соответствия.
string_type Тип строки.
value_type Тип подстроки соответствия.

Функции элементов

Функция-член Description
begin Обозначает начало последовательности подстроки соответствия.
empty Проверяет отсутствие подстрок соответствия.
end Обозначает конец последовательности частичного соответствия.
format Форматирует подстроки соответствия.
get_allocator Возвращает сохраненный распределитель.
length Возвращает длину подстроки соответствия.
max_size Получает максимальное число подстрок соответствия.
position Получает начальное смещение подгруппы.
prefix Получает последовательность перед первой подстрокой соответствия.
size Подсчитывает количество подстрок соответствия.
str Возвращает подстроку совпадения.
suffix Получает последовательность после последней подстроки соответствия.
swap Меняет местами два объекта match_results.

Операторы

Operator Description
operator= Копирование объекта match_results.
оператор[] Доступ к подчиненному объекту.

Требования

Заголовок:<regex>

Пространство имен: std

Пример

// std__regex__match_results.cpp
// compile with: /EHsc
#include <regex>
#include <iostream>

int main()
{
    std::regex rx("c(a*)|(b)");
    std::cmatch mr;

    std::regex_search("xcaaay", mr, rx);

    std::cout << "prefix: matched == " << std::boolalpha
        << mr.prefix().matched
        << ", value == " << mr.prefix() << std::endl;
    std::cout << "whole match: " << mr.length() << " chars, value == "
        << mr.str() << std::endl;
    std::cout << "suffix: matched == " << std::boolalpha
        << mr.suffix().matched
        << ", value == " << mr.suffix() << std::endl;
    std::cout << std::endl;

    std::string fmt("\"c(a*)|(b)\" matched \"$&\"\n"
        "\"(a*)\" matched \"$1\"\n"
        "\"(b)\" matched \"$2\"\n");
    std::cout << mr.format(fmt) << std::endl;
    std::cout << std::endl;

    // index through submatches
    for (size_t n = 0; n < mr.size(); ++n)
    {
        std::cout << "submatch[" << n << "]: matched == " << std::boolalpha
            << mr[n].matched <<
            " at position " << mr.position(n) << std::endl;
        std::cout << "  " << mr.length(n)
            << " chars, value == " << mr[n] << std::endl;
    }
    std::cout << std::endl;

    // iterate through submatches
    for (std::cmatch::iterator it = mr.begin(); it != mr.end(); ++it)
    {
        std::cout << "next submatch: matched == " << std::boolalpha
            << it->matched << std::endl;
        std::cout << "  " << it->length()
            << " chars, value == " << *it << std::endl;
    }
    std::cout << std::endl;

    // other members
    std::cout << "empty == " << std::boolalpha << mr.empty() << std::endl;

    std::cmatch::allocator_type al = mr.get_allocator();
    std::cmatch::string_type str = std::string("x");
    std::cmatch::size_type maxsiz = mr.max_size();
    std::cmatch::char_type ch = 'x';
    std::cmatch::difference_type dif = mr.begin() - mr.end();
    std::cmatch::const_iterator cit = mr.begin();
    std::cmatch::value_type val = *cit;
    std::cmatch::const_reference cref = val;
    std::cmatch::reference ref = val;

    maxsiz = maxsiz;  // to quiet "unused" warnings
    if (ref == cref)
        ch = ch;
    dif = dif;

    return (0);
}
prefix: matched == true, value == x
whole match: 4 chars, value == caaa
suffix: matched == true, value == y

"c(a*)|(b)" matched "caaa"
"(a*)" matched "aaa"
"(b)" matched ""

submatch[0]: matched == true at position 1
  4 chars, value == caaa
submatch[1]: matched == true at position 2
  3 chars, value == aaa
submatch[2]: matched == false at position 6
  0 chars, value ==

next submatch: matched == true
  4 chars, value == caaa
next submatch: matched == true
  3 chars, value == aaa
next submatch: matched == false
  0 chars, value ==

empty == false

match_results::allocator_type

Тип распределителя для управления хранилищем.

typedef Alloc allocator_type;

Замечания

Typedef является синонимом аргумента Alloc шаблона.

match_results::begin

Обозначает начало последовательности подстроки соответствия.

const_iterator begin() const;

Замечания

Функция-член возвращает итератор произвольного доступа, указывающий на первый элемент последовательности (или на место сразу за концом пустой последовательности).

match_results::char_type

Тип элемента.

typedef typename iterator_traits<BidIt>::value_type char_type;

Замечания

Определение типа является синонимом типа iterator_traits<BidIt>::value_type, который является типом элемента искомой последовательности символов.

match_results::const_iterator

Тип постоянного итератора для подстрок соответствия.

typedef T0 const_iterator;

Замечания

Определение типа описывает объект, который можно использовать в качестве постоянного итератора с произвольным доступом для управляемой последовательности.

match_results::const_reference

Тип постоянной ссылки на элемент.

typedef const typename Alloc::const_reference const_reference;

Замечания

Определение типа описывает объект, который можно использовать в качестве постоянной ссылки на элемент управляемой последовательности.

match_results::d ifference_type

Тип разницы итератора.

typedef typename iterator_traits<BidIt>::difference_type difference_type;

Замечания

Определение типа является синонимом типа iterator_traits<BidIt>::difference_type; оно описывает объект, который может представлять разницу между любыми двумя итераторами, указывающими на элементы управляемой последовательности.

match_results::empty

Проверяет отсутствие подстрок соответствия.

bool empty() const;

Замечания

Функция-член возвращает значение true, только если не удалось найти регулярное выражение.

match_results::end

Обозначает конец последовательности частичного соответствия.

const_iterator end() const;

Замечания

Функция-член возвращает итератор, указывающий на место сразу за концом последовательности.

match_results::format

Форматирует подстроки соответствия.

template <class OutIt>
OutIt format(OutIt out,
    const string_type& fmt, match_flag_type flags = format_default) const;

string_type format(const string_type& fmt, match_flag_type flags = format_default) const;

Параметры

OutIt
Тип итератора вывода.

out
Поток вывода для записи.

fmt
Строка форматирования.

flags
Флаги формата.

Замечания

Каждая функция-член создает форматированный текст под управлением fmt формата. Первая функция-член записывает форматированный текст в последовательность, определенную его аргументом , и возвращается . Вторая функция-член возвращает строковый объект, содержащий копию отформатированного текста.

Чтобы создать форматированный текст, литеральный текст в строке формата, как правило, копируется в целевую последовательность. Каждая escape-последовательность в строке формата заменяется текстом, который она представляет. Сведениями о копировании и замене управляют флаги формата, передаваемые функции.

match_results::get_allocator

Возвращает сохраненный распределитель.

allocator_type get_allocator() const;

Замечания

Функция-член возвращает копию объекта распределителя, используемого *this для распределения его объектов sub_match.

match_results::iterator

Тип итератора для подстрок соответствия.

typedef const_iterator iterator;

Замечания

Этот тип описывает объект, который можно использовать в качестве итератора с произвольным доступом для управляемой последовательности.

match_results::length

Возвращает длину подстроки соответствия.

difference_type length(size_type sub = 0) const;

Параметры

sub
Индекс подстроки соответствия.

Замечания

Функция-член возвращает значение (*this)[sub].length().

match_results::match_results

Создает объект.

explicit match_results(const Alloc& alloc = Alloc());

match_results(const match_results& right);

Параметры

распределить
Объект распределителя для сохранения.

right
Копируемый объект match_results.

Замечания

Первый конструктор создает объект match_results, который не содержит подстрок совпадения. Второй конструктор создает match_results объект, который является копией права.

match_results::max_size

Получает максимальное число подстрок соответствия.

size_type max_size() const;

Замечания

Функция-член возвращает длину самой длинной последовательности, которой объект может управлять.

match_results::operator=

Копирование объекта match_results.

match_results& operator=(const match_results& right);

Параметры

right
Копируемый объект match_results.

Замечания

Оператор-член заменяет последовательность, контролируемую *this копией последовательности, управляемой справа.

match_results::operator[]

Доступ к подчиненному объекту.

const_reference operator[](size_type n) const;

Параметры

n
Индекс подстроки совпадения.

Замечания

Функция-член возвращает ссылку на элемент n управляемой последовательности или ссылку на пустой sub_match объект, если или если size() <= n группа записи n не была частью совпадения.

match_results::p osition

Получает начальное смещение подгруппы.

difference_type position(size_type sub = 0) const;

Параметры

sub
Индекс подстроки совпадения.

Замечания

Функция-член возвращает std::distance(prefix().first, (*this)[sub].first), то есть расстояние от первого символа в целевой последовательности до первого символа в подстроке соответствия, указанной элементом n управляемой последовательности.

match_results::p refix

Получает последовательность перед первой подстрокой соответствия.

const_reference prefix() const;

Замечания

Функция-член возвращает ссылку на объект типа sub_match<BidIt> , указывающий на последовательность символов, которая начинается с начала целевой последовательности и заканчивается в (*this)[0].first, то есть он указывает на текст, который предшествует сопоставленной части последовательности.

match_results::reference

Тип ссылки на элемент.

typedef const_reference reference;

Замечания

Тип является синонимом для типа const_reference.

match_results::size

Подсчитывает количество подстрок соответствия.

size_type size() const;

Замечания

Функция-член возвращает число, которое на единицу больше, чем количество групп записи в регулярном выражении, использовавшемся для поиска, или значение 0, если поиск не выполнялся.

match_results::size_type

Тип числа подстрок соответствия.

typedef typename Alloc::size_type size_type;

Замечания

Тип является синонимом для типа Alloc::size_type.

match_results::str

Возвращает подстроку совпадения.

string_type str(size_type sub = 0) const;

Параметры

sub
Индекс подстроки совпадения.

Замечания

Функция-член возвращает значение string_type((*this)[sub]).

match_results::string_type

Тип строки.

typedef basic_string<char_type> string_type;

Замечания

Тип является синонимом для типа basic_string<char_type>.

match_results::суффикс

Получает последовательность после последней подстроки соответствия.

const_reference suffix() const;

Замечания

Функция-член возвращает ссылку на объект типа sub_match<BidIt> , указывающий на последовательность символов, которая начинается с (*this)[size() - 1].second и заканчивается в конце целевой последовательности, то есть он указывает на текст, который следует за сопоставленной частью последовательности.

match_results::swap

Меняет местами два объекта match_results.

void swap(const match_results& right) throw();

Параметры

right
Объект match_results для замены.

Замечания

Функция-член переключает содержимое *this и право в постоянное время и не выдает исключений.

match_results::value_type

Тип подстроки соответствия.

typedef sub_match<BidIt> value_type;

Замечания

Определение типа является синонимом для типа sub_match<BidIt>.

См. также

<regex>