1 //===----------------------------------------------------------------------===// 2 // 3 // The LLVM Compiler Infrastructure 4 // 5 // This file is dual licensed under the MIT and the University of Illinois Open 6 // Source Licenses. See LICENSE.TXT for details. 7 // 8 //===----------------------------------------------------------------------===// 9 10 // <regex> 11 12 // class regex_token_iterator<BidirectionalIterator, charT, traits> 13 14 // const value_type& operator*() const; 15 16 #include <regex> 17 #include <cassert> 18 19 int main() 20 { 21 { 22 std::regex phone_numbers("\\d{3}-\\d{4}"); 23 const char phone_book[] = "start 555-1234, 555-2345, 555-3456 end"; 24 std::cregex_token_iterator i(std::begin(phone_book), std::end(phone_book)-1, 25 phone_numbers, -1); 26 assert(i != std::cregex_token_iterator()); 27 assert((*i).str() == "start "); 28 ++i; 29 assert(i != std::cregex_token_iterator()); 30 assert((*i).str() == ", "); 31 ++i; 32 assert(i != std::cregex_token_iterator()); 33 assert((*i).str() == ", "); 34 ++i; 35 assert(i != std::cregex_token_iterator()); 36 assert((*i).str() == " end"); 37 ++i; 38 assert(i == std::cregex_token_iterator()); 39 } 40 { 41 std::regex phone_numbers("\\d{3}-\\d{4}"); 42 const char phone_book[] = "start 555-1234, 555-2345, 555-3456 end"; 43 std::cregex_token_iterator i(std::begin(phone_book), std::end(phone_book)-1, 44 phone_numbers); 45 assert(i != std::cregex_token_iterator()); 46 assert((*i).str() == "555-1234"); 47 ++i; 48 assert(i != std::cregex_token_iterator()); 49 assert((*i).str() == "555-2345"); 50 ++i; 51 assert(i != std::cregex_token_iterator()); 52 assert((*i).str() == "555-3456"); 53 ++i; 54 assert(i == std::cregex_token_iterator()); 55 } 56 { 57 std::regex phone_numbers("\\d{3}-(\\d{4})"); 58 const char phone_book[] = "start 555-1234, 555-2345, 555-3456 end"; 59 std::cregex_token_iterator i(std::begin(phone_book), std::end(phone_book)-1, 60 phone_numbers, 1); 61 assert(i != std::cregex_token_iterator()); 62 assert((*i).str() == "1234"); 63 ++i; 64 assert(i != std::cregex_token_iterator()); 65 assert((*i).str() == "2345"); 66 ++i; 67 assert(i != std::cregex_token_iterator()); 68 assert((*i).str() == "3456"); 69 ++i; 70 assert(i == std::cregex_token_iterator()); 71 } 72 } 73