Класс 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>
.