Namespaces
Variants

std::regex_iterator<BidirIt,CharT,Traits>:: regex_iterator

From ru.cppreference.net
Regular expressions library
Classes
(C++11)
Algorithms
Iterators
Exceptions
Traits
Constants
(C++11)
Regex Grammar
regex_iterator ( ) ;
(1) (начиная с C++11)
regex_iterator ( BidirIt a, BidirIt b,

const regex_type & re,
std:: regex_constants :: match_flag_type m =

std:: regex_constants :: match_default ) ;
(2) (начиная с C++11)
regex_iterator ( const regex_iterator & ) ;
(3) (начиная с C++11)
regex_iterator ( BidirIt, BidirIt,

const regex_type && ,
std:: regex_constants :: match_flag_type =

std:: regex_constants :: match_default ) = delete ;
(4) (начиная с C++11)

Создает новый regex_iterator :

1) Конструктор по умолчанию. Создает итератор конца последовательности.
2) Создает regex_iterator из последовательности символов [ a , b ) , регулярного выражения re и флага m , который определяет поведение сопоставления. Этот конструктор выполняет первоначальный вызов std::regex_search с этими данными. Если результат этого первоначального вызова false , * this устанавливается в итератор конца последовательности.
3) Копирует regex_iterator .
4) Перегрузка (2) не может быть вызвана с временным regex, поскольку возвращаемый итератор будет немедленно инвалидирован.

Параметры

a - LegacyBidirectionalIterator на начало целевой последовательности символов
b - LegacyBidirectionalIterator на конец целевой последовательности символов
re - регулярное выражение, используемое для поиска в целевой последовательности символов
m - флаги, определяющие поведение re

Пример

#include <iostream>
#include <regex>
#include <string_view>
int main()
{
    constexpr std::string_view str{R"(
        #ONE: *p = &Mass;
        #Two: MOV %rd, 42
    )"};
    const std::regex re("[a-w]");
    // create regex_iterator, overload (2)
    auto it = std::regex_iterator<std::string_view::iterator>
    {
        str.cbegin(), str.cend(),
        re // re is lvalue; if an immediate expression was used
           // instead, e.g. std::regex{"[a-z]"}, this would
           // produce an error since overload (4) is deleted
    };
    for (decltype(it) last /* overload (1) */; it != last; ++it)
        std::cout << (*it).str();
    std::cout << '\n';
}

Вывод:

password

Отчёты о дефектах

Следующие отчеты об изменениях в поведении, содержащие описания дефектов, были применены ретроактивно к ранее опубликованным стандартам C++.

DR Применяется к Поведение в опубликованной версии Корректное поведение
LWG 2332 C++11 regex_iterator, созданный из временного
basic_regex, становился недействительным немедленно
такая конструкция запрещена через удаленную перегрузку