Spec-Zone.ru › C++

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

regex_iterator();
(1) (since 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) (since C++11)
regex_iterator( const regex_iterator& );
(3) (since C++11)
regex_iterator( BidirIt, BidirIt,
                const regex_type&&,
                std::regex_constants::match_flag_type =
                    std::regex_constants::match_default ) = delete;
(4) (since C++11)

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

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

Параметры

a - Двунаправленный итератор начала целевой последовательности символов
b - Двунаправленный итератор конца целевой последовательности символов
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/w/cpp/regex/regex_iterator/regex_iterator

Spec-Zone.ru

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