1 //===----------------------------------------------------------------------===//
3 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4 // See https://llvm.org/LICENSE.txt for license information.
5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
7 //===----------------------------------------------------------------------===//
11 // class regex_token_iterator<BidirectionalIterator, charT, traits>
13 // regex_token_iterator(BidirectionalIterator a, BidirectionalIterator b,
14 // const regex_type& re,
15 // const std::vector<int>& submatches,
16 // regex_constants::match_flag_type m =
17 // regex_constants::match_default);
21 #include "test_macros.h"
26 std::regex
phone_numbers("\\d{3}-(\\d{4})");
27 const char phone_book
[] = "start 555-1234, 555-2345, 555-3456 end";
31 std::cregex_token_iterator
i(std::begin(phone_book
), std::end(phone_book
)-1,
33 assert(i
!= std::cregex_token_iterator());
34 assert(i
->str() == "start ");
36 assert(i
!= std::cregex_token_iterator());
37 assert(i
->str() == "start ");
39 assert(i
!= std::cregex_token_iterator());
40 assert(i
->str() == ", ");
42 assert(i
!= std::cregex_token_iterator());
43 assert(i
->str() == ", ");
45 assert(i
!= std::cregex_token_iterator());
46 assert(i
->str() == ", ");
48 assert(i
!= std::cregex_token_iterator());
49 assert(i
->str() == ", ");
51 assert(i
!= std::cregex_token_iterator());
52 assert(i
->str() == " end");
54 assert(i
== std::cregex_token_iterator());
57 std::regex
phone_numbers("\\d{3}-(\\d{4})");
58 const char phone_book
[] = "start 555-1234, 555-2345, 555-3456 end";
62 std::cregex_token_iterator
i(std::begin(phone_book
), std::end(phone_book
)-1,
64 assert(i
!= std::cregex_token_iterator());
65 assert(i
->str() == "start ");
67 assert(i
!= std::cregex_token_iterator());
68 assert(i
->str() == "555-1234");
70 assert(i
!= std::cregex_token_iterator());
71 assert(i
->str() == ", ");
73 assert(i
!= std::cregex_token_iterator());
74 assert(i
->str() == "555-2345");
76 assert(i
!= std::cregex_token_iterator());
77 assert(i
->str() == ", ");
79 assert(i
!= std::cregex_token_iterator());
80 assert(i
->str() == "555-3456");
82 assert(i
!= std::cregex_token_iterator());
83 assert(i
->str() == " end");
85 assert(i
== std::cregex_token_iterator());
88 std::regex
phone_numbers("\\d{3}-(\\d{4})");
89 const char phone_book
[] = "start 555-1234, 555-2345, 555-3456 end";
94 std::cregex_token_iterator
i(std::begin(phone_book
), std::end(phone_book
)-1,
96 assert(i
!= std::cregex_token_iterator());
97 assert(i
->str() == "start ");
99 assert(i
!= std::cregex_token_iterator());
100 assert(i
->str() == "555-1234");
102 assert(i
!= std::cregex_token_iterator());
103 assert(i
->str() == "1234");
105 assert(i
!= std::cregex_token_iterator());
106 assert(i
->str() == ", ");
108 assert(i
!= std::cregex_token_iterator());
109 assert(i
->str() == "555-2345");
111 assert(i
!= std::cregex_token_iterator());
112 assert(i
->str() == "2345");
114 assert(i
!= std::cregex_token_iterator());
115 assert(i
->str() == ", ");
117 assert(i
!= std::cregex_token_iterator());
118 assert(i
->str() == "555-3456");
120 assert(i
!= std::cregex_token_iterator());
121 assert(i
->str() == "3456");
123 assert(i
!= std::cregex_token_iterator());
124 assert(i
->str() == " end");
126 assert(i
== std::cregex_token_iterator());