1c1ecd97f005317efe271f04c725fdf676653dc93Howard Hinnant//===----------------------------------------------------------------------===// 2c1ecd97f005317efe271f04c725fdf676653dc93Howard Hinnant// 3c1ecd97f005317efe271f04c725fdf676653dc93Howard Hinnant// The LLVM Compiler Infrastructure 4c1ecd97f005317efe271f04c725fdf676653dc93Howard Hinnant// 5c1ecd97f005317efe271f04c725fdf676653dc93Howard Hinnant// This file is dual licensed under the MIT and the University of Illinois Open 6c1ecd97f005317efe271f04c725fdf676653dc93Howard Hinnant// Source Licenses. See LICENSE.TXT for details. 7c1ecd97f005317efe271f04c725fdf676653dc93Howard Hinnant// 8c1ecd97f005317efe271f04c725fdf676653dc93Howard Hinnant//===----------------------------------------------------------------------===// 9c1ecd97f005317efe271f04c725fdf676653dc93Howard Hinnant 10c1ecd97f005317efe271f04c725fdf676653dc93Howard Hinnant// <regex> 11c1ecd97f005317efe271f04c725fdf676653dc93Howard Hinnant 12c1ecd97f005317efe271f04c725fdf676653dc93Howard Hinnant// template <class BidirectionalIterator, class Allocator, class charT, class traits> 13c1ecd97f005317efe271f04c725fdf676653dc93Howard Hinnant// bool 14c1ecd97f005317efe271f04c725fdf676653dc93Howard Hinnant// regex_match(BidirectionalIterator first, BidirectionalIterator last, 15c1ecd97f005317efe271f04c725fdf676653dc93Howard Hinnant// match_results<BidirectionalIterator, Allocator>& m, 16c1ecd97f005317efe271f04c725fdf676653dc93Howard Hinnant// const basic_regex<charT, traits>& e, 17c1ecd97f005317efe271f04c725fdf676653dc93Howard Hinnant// regex_constants::match_flag_type flags = regex_constants::match_default); 18c1ecd97f005317efe271f04c725fdf676653dc93Howard Hinnant 19c1ecd97f005317efe271f04c725fdf676653dc93Howard Hinnant// http://llvm.org/bugs/show_bug.cgi?id=16135 20c1ecd97f005317efe271f04c725fdf676653dc93Howard Hinnant 21c1ecd97f005317efe271f04c725fdf676653dc93Howard Hinnant#include <string> 22c1ecd97f005317efe271f04c725fdf676653dc93Howard Hinnant#include <regex> 23c1ecd97f005317efe271f04c725fdf676653dc93Howard Hinnant#include <cassert> 24c1ecd97f005317efe271f04c725fdf676653dc93Howard Hinnant 25c1ecd97f005317efe271f04c725fdf676653dc93Howard Hinnantvoid 26c1ecd97f005317efe271f04c725fdf676653dc93Howard Hinnanttest1() 27c1ecd97f005317efe271f04c725fdf676653dc93Howard Hinnant{ 287112dae6acac544a0271a85d95342c583441e2d1Dan Albert std::string re("\\{a\\}"); 297112dae6acac544a0271a85d95342c583441e2d1Dan Albert std::string target("{a}"); 307112dae6acac544a0271a85d95342c583441e2d1Dan Albert std::regex regex(re); 31c1ecd97f005317efe271f04c725fdf676653dc93Howard Hinnant std::smatch smatch; 32c1ecd97f005317efe271f04c725fdf676653dc93Howard Hinnant assert((std::regex_match(target, smatch, regex))); 33c1ecd97f005317efe271f04c725fdf676653dc93Howard Hinnant} 34c1ecd97f005317efe271f04c725fdf676653dc93Howard Hinnant 35c1ecd97f005317efe271f04c725fdf676653dc93Howard Hinnantvoid 36c1ecd97f005317efe271f04c725fdf676653dc93Howard Hinnanttest2() 37c1ecd97f005317efe271f04c725fdf676653dc93Howard Hinnant{ 387112dae6acac544a0271a85d95342c583441e2d1Dan Albert std::string re("\\{a\\}"); 397112dae6acac544a0271a85d95342c583441e2d1Dan Albert std::string target("{a}"); 407112dae6acac544a0271a85d95342c583441e2d1Dan Albert std::regex regex(re, std::regex::extended); 41c1ecd97f005317efe271f04c725fdf676653dc93Howard Hinnant std::smatch smatch; 42c1ecd97f005317efe271f04c725fdf676653dc93Howard Hinnant assert((std::regex_match(target, smatch, regex))); 43c1ecd97f005317efe271f04c725fdf676653dc93Howard Hinnant} 44c1ecd97f005317efe271f04c725fdf676653dc93Howard Hinnant 45c1ecd97f005317efe271f04c725fdf676653dc93Howard Hinnantvoid 46c1ecd97f005317efe271f04c725fdf676653dc93Howard Hinnanttest3() 47c1ecd97f005317efe271f04c725fdf676653dc93Howard Hinnant{ 487112dae6acac544a0271a85d95342c583441e2d1Dan Albert std::string re("\\{a\\}"); 497112dae6acac544a0271a85d95342c583441e2d1Dan Albert std::string target("{a}"); 507112dae6acac544a0271a85d95342c583441e2d1Dan Albert std::regex regex(re, std::regex::awk); 51c1ecd97f005317efe271f04c725fdf676653dc93Howard Hinnant std::smatch smatch; 52c1ecd97f005317efe271f04c725fdf676653dc93Howard Hinnant assert((std::regex_match(target, smatch, regex))); 53c1ecd97f005317efe271f04c725fdf676653dc93Howard Hinnant} 54c1ecd97f005317efe271f04c725fdf676653dc93Howard Hinnant 55c1ecd97f005317efe271f04c725fdf676653dc93Howard Hinnantvoid 56c1ecd97f005317efe271f04c725fdf676653dc93Howard Hinnanttest4() 57c1ecd97f005317efe271f04c725fdf676653dc93Howard Hinnant{ 587112dae6acac544a0271a85d95342c583441e2d1Dan Albert std::string re("\\{a\\}"); 597112dae6acac544a0271a85d95342c583441e2d1Dan Albert std::string target("{a}"); 607112dae6acac544a0271a85d95342c583441e2d1Dan Albert std::regex regex(re, std::regex::egrep); 61c1ecd97f005317efe271f04c725fdf676653dc93Howard Hinnant std::smatch smatch; 62c1ecd97f005317efe271f04c725fdf676653dc93Howard Hinnant assert((std::regex_match(target, smatch, regex))); 63c1ecd97f005317efe271f04c725fdf676653dc93Howard Hinnant} 64c1ecd97f005317efe271f04c725fdf676653dc93Howard Hinnant 65c1ecd97f005317efe271f04c725fdf676653dc93Howard Hinnantint 66c1ecd97f005317efe271f04c725fdf676653dc93Howard Hinnantmain() 67c1ecd97f005317efe271f04c725fdf676653dc93Howard Hinnant{ 68c1ecd97f005317efe271f04c725fdf676653dc93Howard Hinnant test1(); 69c1ecd97f005317efe271f04c725fdf676653dc93Howard Hinnant test2(); 70c1ecd97f005317efe271f04c725fdf676653dc93Howard Hinnant test3(); 71c1ecd97f005317efe271f04c725fdf676653dc93Howard Hinnant test4(); 72c1ecd97f005317efe271f04c725fdf676653dc93Howard Hinnant} 73