Namespaces
Variants

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

From 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) 문자 시퀀스 [ a , b ) , 정규 표현식 re , 그리고 매칭 동작을 제어하는 플래그 m 로부터 regex_iterator 를 생성합니다. 이 생성자는 이 데이터로 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]");
    // regex_iterator 생성, 오버로드 (2)
    auto it = std::regex_iterator<std::string_view::iterator>
    {
        str.cbegin(), str.cend(),
        re // re는 lvalue; 만약 즉시 실행 표현식이 사용되었다면
           // 예를 들어 std::regex{"[a-z]"}인 경우,
           // 오버로드 (4)가 삭제되었기 때문에 오류가 발생함
    };
    for (decltype(it) last /* 오버로드 (1) */; it != last; ++it)
        std::cout << (*it).str();
    std::cout << '\n';
}

출력:

password

결함 보고서

다음의 동작 변경 결함 보고서들은 이전에 발표된 C++ 표준에 소급 적용되었습니다.

DR 적용 대상 게시된 동작 올바른 동작
LWG 2332 C++11 임시 basic_regex 로부터 생성된 regex_iterator
즉시 무효화됨
삭제된 오버로드를 통해 해당 생성이 허용되지 않음