Spec-Zone.ru › C++

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

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) с временным объектом регулярного выражения не допускается, поскольку возвращённый итератор сразу станет недействительным.

Параметры

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 немедленно становился недействительным
такое создание запрещено удалённой перегрузкой

© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/cpp/regex/regex_iterator/regex_iterator

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API