17670f7d1ed9f2e6c2012c62bea38acb85f6adc40Howard Hinnant//===----------------------------------------------------------------------===// 27670f7d1ed9f2e6c2012c62bea38acb85f6adc40Howard Hinnant// 37670f7d1ed9f2e6c2012c62bea38acb85f6adc40Howard Hinnant// The LLVM Compiler Infrastructure 47670f7d1ed9f2e6c2012c62bea38acb85f6adc40Howard Hinnant// 57670f7d1ed9f2e6c2012c62bea38acb85f6adc40Howard Hinnant// This file is dual licensed under the MIT and the University of Illinois Open 67670f7d1ed9f2e6c2012c62bea38acb85f6adc40Howard Hinnant// Source Licenses. See LICENSE.TXT for details. 77670f7d1ed9f2e6c2012c62bea38acb85f6adc40Howard Hinnant// 87670f7d1ed9f2e6c2012c62bea38acb85f6adc40Howard Hinnant//===----------------------------------------------------------------------===// 97670f7d1ed9f2e6c2012c62bea38acb85f6adc40Howard Hinnant 107670f7d1ed9f2e6c2012c62bea38acb85f6adc40Howard Hinnant// <regex> 117670f7d1ed9f2e6c2012c62bea38acb85f6adc40Howard Hinnant 127670f7d1ed9f2e6c2012c62bea38acb85f6adc40Howard Hinnant// template <class BidirectionalIterator, class Allocator, class charT, class traits> 137670f7d1ed9f2e6c2012c62bea38acb85f6adc40Howard Hinnant// bool 147670f7d1ed9f2e6c2012c62bea38acb85f6adc40Howard Hinnant// regex_search(BidirectionalIterator first, BidirectionalIterator last, 157670f7d1ed9f2e6c2012c62bea38acb85f6adc40Howard Hinnant// match_results<BidirectionalIterator, Allocator>& m, 167670f7d1ed9f2e6c2012c62bea38acb85f6adc40Howard Hinnant// const basic_regex<charT, traits>& e, 177670f7d1ed9f2e6c2012c62bea38acb85f6adc40Howard Hinnant// regex_constants::match_flag_type flags = regex_constants::match_default); 187670f7d1ed9f2e6c2012c62bea38acb85f6adc40Howard Hinnant 197670f7d1ed9f2e6c2012c62bea38acb85f6adc40Howard Hinnant#include <regex> 207670f7d1ed9f2e6c2012c62bea38acb85f6adc40Howard Hinnant#include <cassert> 217670f7d1ed9f2e6c2012c62bea38acb85f6adc40Howard Hinnant 227670f7d1ed9f2e6c2012c62bea38acb85f6adc40Howard Hinnantint main() 237670f7d1ed9f2e6c2012c62bea38acb85f6adc40Howard Hinnant{ 247670f7d1ed9f2e6c2012c62bea38acb85f6adc40Howard Hinnant // Iterating over /^a/ should yield one instance at the beginning 257670f7d1ed9f2e6c2012c62bea38acb85f6adc40Howard Hinnant // of the text. 267670f7d1ed9f2e6c2012c62bea38acb85f6adc40Howard Hinnant 277670f7d1ed9f2e6c2012c62bea38acb85f6adc40Howard Hinnant const char *text = "aaa\naa"; 287670f7d1ed9f2e6c2012c62bea38acb85f6adc40Howard Hinnant std::regex re{"^a"}; 297670f7d1ed9f2e6c2012c62bea38acb85f6adc40Howard Hinnant std::cregex_iterator it{text, text+6, re}; 307670f7d1ed9f2e6c2012c62bea38acb85f6adc40Howard Hinnant std::cregex_iterator end{}; 317670f7d1ed9f2e6c2012c62bea38acb85f6adc40Howard Hinnant 327670f7d1ed9f2e6c2012c62bea38acb85f6adc40Howard Hinnant assert(it->str() == "a"); 337670f7d1ed9f2e6c2012c62bea38acb85f6adc40Howard Hinnant assert(it->position(0) == 0); 347670f7d1ed9f2e6c2012c62bea38acb85f6adc40Howard Hinnant assert(it->length(0) == 1); 357670f7d1ed9f2e6c2012c62bea38acb85f6adc40Howard Hinnant 367670f7d1ed9f2e6c2012c62bea38acb85f6adc40Howard Hinnant ++it; 377670f7d1ed9f2e6c2012c62bea38acb85f6adc40Howard Hinnant assert(it == end); 387670f7d1ed9f2e6c2012c62bea38acb85f6adc40Howard Hinnant} 39