1262b779f1d1635f10b3fdbb28cc45c55d0b3ff42Howard Hinnant//===----------------------------------------------------------------------===// 2262b779f1d1635f10b3fdbb28cc45c55d0b3ff42Howard Hinnant// 3262b779f1d1635f10b3fdbb28cc45c55d0b3ff42Howard Hinnant// The LLVM Compiler Infrastructure 4262b779f1d1635f10b3fdbb28cc45c55d0b3ff42Howard Hinnant// 5b64f8b07c104c6cc986570ac8ee0ed16a9f23976Howard Hinnant// This file is dual licensed under the MIT and the University of Illinois Open 6b64f8b07c104c6cc986570ac8ee0ed16a9f23976Howard Hinnant// Source Licenses. See LICENSE.TXT for details. 7262b779f1d1635f10b3fdbb28cc45c55d0b3ff42Howard Hinnant// 8262b779f1d1635f10b3fdbb28cc45c55d0b3ff42Howard Hinnant//===----------------------------------------------------------------------===// 9262b779f1d1635f10b3fdbb28cc45c55d0b3ff42Howard Hinnant 10262b779f1d1635f10b3fdbb28cc45c55d0b3ff42Howard Hinnant// <regex> 11262b779f1d1635f10b3fdbb28cc45c55d0b3ff42Howard Hinnant 12262b779f1d1635f10b3fdbb28cc45c55d0b3ff42Howard Hinnant// class regex_token_iterator<BidirectionalIterator, charT, traits> 13262b779f1d1635f10b3fdbb28cc45c55d0b3ff42Howard Hinnant 14262b779f1d1635f10b3fdbb28cc45c55d0b3ff42Howard Hinnant// template <size_t N> 15262b779f1d1635f10b3fdbb28cc45c55d0b3ff42Howard Hinnant// regex_token_iterator(BidirectionalIterator a, BidirectionalIterator b, 16262b779f1d1635f10b3fdbb28cc45c55d0b3ff42Howard Hinnant// const regex_type& re, 17262b779f1d1635f10b3fdbb28cc45c55d0b3ff42Howard Hinnant// const int (&submatches)[N], 18262b779f1d1635f10b3fdbb28cc45c55d0b3ff42Howard Hinnant// regex_constants::match_flag_type m = 19262b779f1d1635f10b3fdbb28cc45c55d0b3ff42Howard Hinnant// regex_constants::match_default); 20262b779f1d1635f10b3fdbb28cc45c55d0b3ff42Howard Hinnant 21262b779f1d1635f10b3fdbb28cc45c55d0b3ff42Howard Hinnant#include <regex> 22262b779f1d1635f10b3fdbb28cc45c55d0b3ff42Howard Hinnant#include <cassert> 23262b779f1d1635f10b3fdbb28cc45c55d0b3ff42Howard Hinnant 24262b779f1d1635f10b3fdbb28cc45c55d0b3ff42Howard Hinnantint main() 25262b779f1d1635f10b3fdbb28cc45c55d0b3ff42Howard Hinnant{ 26262b779f1d1635f10b3fdbb28cc45c55d0b3ff42Howard Hinnant { 27262b779f1d1635f10b3fdbb28cc45c55d0b3ff42Howard Hinnant std::regex phone_numbers("\\d{3}-(\\d{4})"); 28262b779f1d1635f10b3fdbb28cc45c55d0b3ff42Howard Hinnant const char phone_book[] = "start 555-1234, 555-2345, 555-3456 end"; 29262b779f1d1635f10b3fdbb28cc45c55d0b3ff42Howard Hinnant const int indices[] = {-1, 0, 1}; 3059832523acb4b3d9764bcdeeef1ea56ad690eb0eHoward Hinnant std::cregex_token_iterator i(std::begin(phone_book), std::end(phone_book)-1, 31262b779f1d1635f10b3fdbb28cc45c55d0b3ff42Howard Hinnant phone_numbers, indices); 32262b779f1d1635f10b3fdbb28cc45c55d0b3ff42Howard Hinnant assert(i != std::cregex_token_iterator()); 33262b779f1d1635f10b3fdbb28cc45c55d0b3ff42Howard Hinnant assert(i->str() == "start "); 34262b779f1d1635f10b3fdbb28cc45c55d0b3ff42Howard Hinnant ++i; 35262b779f1d1635f10b3fdbb28cc45c55d0b3ff42Howard Hinnant assert(i != std::cregex_token_iterator()); 36262b779f1d1635f10b3fdbb28cc45c55d0b3ff42Howard Hinnant assert(i->str() == "555-1234"); 37262b779f1d1635f10b3fdbb28cc45c55d0b3ff42Howard Hinnant ++i; 38262b779f1d1635f10b3fdbb28cc45c55d0b3ff42Howard Hinnant assert(i != std::cregex_token_iterator()); 39262b779f1d1635f10b3fdbb28cc45c55d0b3ff42Howard Hinnant assert(i->str() == "1234"); 40262b779f1d1635f10b3fdbb28cc45c55d0b3ff42Howard Hinnant ++i; 41262b779f1d1635f10b3fdbb28cc45c55d0b3ff42Howard Hinnant assert(i != std::cregex_token_iterator()); 42262b779f1d1635f10b3fdbb28cc45c55d0b3ff42Howard Hinnant assert(i->str() == ", "); 43262b779f1d1635f10b3fdbb28cc45c55d0b3ff42Howard Hinnant ++i; 44262b779f1d1635f10b3fdbb28cc45c55d0b3ff42Howard Hinnant assert(i != std::cregex_token_iterator()); 45262b779f1d1635f10b3fdbb28cc45c55d0b3ff42Howard Hinnant assert(i->str() == "555-2345"); 46262b779f1d1635f10b3fdbb28cc45c55d0b3ff42Howard Hinnant ++i; 47262b779f1d1635f10b3fdbb28cc45c55d0b3ff42Howard Hinnant assert(i != std::cregex_token_iterator()); 48262b779f1d1635f10b3fdbb28cc45c55d0b3ff42Howard Hinnant assert(i->str() == "2345"); 49262b779f1d1635f10b3fdbb28cc45c55d0b3ff42Howard Hinnant ++i; 50262b779f1d1635f10b3fdbb28cc45c55d0b3ff42Howard Hinnant assert(i != std::cregex_token_iterator()); 51262b779f1d1635f10b3fdbb28cc45c55d0b3ff42Howard Hinnant assert(i->str() == ", "); 52262b779f1d1635f10b3fdbb28cc45c55d0b3ff42Howard Hinnant ++i; 53262b779f1d1635f10b3fdbb28cc45c55d0b3ff42Howard Hinnant assert(i != std::cregex_token_iterator()); 54262b779f1d1635f10b3fdbb28cc45c55d0b3ff42Howard Hinnant assert(i->str() == "555-3456"); 55262b779f1d1635f10b3fdbb28cc45c55d0b3ff42Howard Hinnant ++i; 56262b779f1d1635f10b3fdbb28cc45c55d0b3ff42Howard Hinnant assert(i != std::cregex_token_iterator()); 57262b779f1d1635f10b3fdbb28cc45c55d0b3ff42Howard Hinnant assert(i->str() == "3456"); 58262b779f1d1635f10b3fdbb28cc45c55d0b3ff42Howard Hinnant ++i; 59262b779f1d1635f10b3fdbb28cc45c55d0b3ff42Howard Hinnant assert(i != std::cregex_token_iterator()); 60262b779f1d1635f10b3fdbb28cc45c55d0b3ff42Howard Hinnant assert(i->str() == " end"); 61262b779f1d1635f10b3fdbb28cc45c55d0b3ff42Howard Hinnant ++i; 62262b779f1d1635f10b3fdbb28cc45c55d0b3ff42Howard Hinnant assert(i == std::cregex_token_iterator()); 63262b779f1d1635f10b3fdbb28cc45c55d0b3ff42Howard Hinnant } 64a8d775970841ca062fcd44fb16f7b164ce4f3aaeHoward Hinnant} 65