Namespaces
Variants

std:: sub_match

From cppreference.net
Regular expressions library
Classes
sub_match
(C++11)
Algorithms
Iterators
Exceptions
Traits
Constants
(C++11)
Regex Grammar
Определено в заголовочном файле <regex>
template < class BidirIt >
class sub_match ;
(начиная с C++11)

Шаблон класса std::sub_match используется движком регулярных выражений для обозначения последовательностей символов, совпадающих с помеченными подвыражениями. Совпадение представляет собой пару [ begin , end ) в целевом диапазоне, совпадающем с регулярным выражением, но с дополнительными функциями-наблюдателями для повышения ясности кода.

Только конструктор по умолчанию общедоступен. Экземпляры std::sub_match обычно создаются и заполняются как часть контейнера std::match_results во время обработки одним из алгоритмов регулярных выражений.

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

std::sub_match наследуется от std:: pair < BidirIt, BidirIt > , хотя не может рассматриваться как объект std::pair , поскольку такие функции-члены, как присваивание, не будут работать ожидаемым образом.

Содержание

Требования к типам

-
BidirIt должен удовлетворять требованиям LegacyBidirectionalIterator .

Специализации

Для распространённых типов символьных последовательностей предоставлены специализации:

Определено в заголовочном файле <regex>
Тип Определение
std::csub_match std :: sub_match < const char * >
std::wcsub_match std :: sub_match < const wchar_t * >
std::ssub_match std :: sub_match < std :: string :: const_iterator >
std::wssub_match std :: sub_match < std :: wstring :: const_iterator >

Вложенные типы

Тип Определение
iterator BidirIt
value_type std:: iterator_traits < BidirIt > :: value_type
difference_type std:: iterator_traits < BidirIt > :: difference_type
string_type std:: basic_string < value_type >

Члены данных

Участник Описание
bool matched
был ли этот поиск успешным
(общедоступный объект-член)

Наследуется от std:: pair

BidirIt first
начало последовательности совпадения
(публичный член-объект)
BidirIt second
позиция за концом последовательности совпадения
(публичный член-объект)

Функции-члены

создает объект соответствия
(public member function)
Наблюдатели
возвращает длину соответствия (если есть)
(public member function)
преобразует в базовый строковый тип
(public member function)
сравнивает соответствующую подпоследовательность (если есть)
(public member function)
Модификаторы
обменивает содержимое
(public member function)

Функции, не являющиеся членами класса

(удалено в C++20) (удалено в C++20) (удалено в C++20) (удалено в C++20) (удалено в C++20) (C++20)
сравнивает sub_match с другим sub_match , строкой или символом
(шаблон функции)
выводит совпадающую подпоследовательность символов
(шаблон функции)

Пример

#include <cassert>
#include <iostream>
#include <regex>
#include <string>
int main()
{
    std::string sentence{"Friday the thirteenth."};
    const std::regex re{"([A-z]+) ([a-z]+) ([a-z]+)"};
    std::smatch words;
    std::regex_search(sentence, words, re);
    std::cout << std::boolalpha;
    for (const auto& m : words)
    {
        assert(m.matched);
        std::cout << "m: [" << m << "], m.length(): " << m.length() << ", "
                     "*m.first: '" << *m.first << "', "
                     "*m.second: '" << *m.second << "'\n";
    }
}

Вывод:

m: [Friday the thirteenth], m.length(): 21, *m.first: 'F', *m.second: '.'
m: [Friday], m.length(): 6, *m.first: 'F', *m.second: ' '
m: [the], m.length(): 3, *m.first: 't', *m.second: ' '
m: [thirteenth], m.length(): 10, *m.first: 't', *m.second: '.'

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

выполняет итерацию по указанным подвыражениям во всех совпадениях регулярного выражения в заданной строке или по несовпадающим подстрокам
(шаблон класса)