awk.pass.cpp revision b64f8b07c104c6cc986570ac8ee0ed16a9f23976
115476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant//===----------------------------------------------------------------------===// 215476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant// 315476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant// The LLVM Compiler Infrastructure 415476f345d78e8d9e533bd45a685c4b4480e6908Howard 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. 715476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant// 815476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant//===----------------------------------------------------------------------===// 915476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant 1015476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant// <regex> 1115476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant 1215476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant// template <class BidirectionalIterator, class Allocator, class charT, class traits> 1315476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant// bool 1415476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant// regex_search(BidirectionalIterator first, BidirectionalIterator last, 1515476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant// match_results<BidirectionalIterator, Allocator>& m, 1615476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant// const basic_regex<charT, traits>& e, 1715476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant// regex_constants::match_flag_type flags = regex_constants::match_default); 1815476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant 1915476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant#include <regex> 2015476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant#include <cassert> 2115476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant 2215476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant#include "../../iterators.h" 2315476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant 2415476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnantint main() 2515476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant{ 2615476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant { 2715476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant std::cmatch m; 2815476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant const char s[] = "a"; 2915476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(std::regex_search(s, m, std::regex("a", std::regex_constants::awk))); 3015476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.size() == 1); 3115476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(!m.empty()); 3215476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(!m.prefix().matched); 3315476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.prefix().first == s); 3415476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.prefix().second == m[0].first); 3515476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(!m.suffix().matched); 3615476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.suffix().first == m[0].second); 3715476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.suffix().second == s+1); 3815476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.length(0) == 1); 3915476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.position(0) == 0); 4015476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.str(0) == "a"); 4115476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant } 4215476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant { 4315476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant std::cmatch m; 4415476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant const char s[] = "ab"; 4515476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(std::regex_search(s, m, std::regex("ab", std::regex_constants::awk))); 4615476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.size() == 1); 4715476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(!m.prefix().matched); 4815476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.prefix().first == s); 4915476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.prefix().second == m[0].first); 5015476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(!m.suffix().matched); 5115476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.suffix().first == m[0].second); 5215476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.suffix().second == s+2); 5315476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.length(0) == 2); 5415476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.position(0) == 0); 5515476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.str(0) == "ab"); 5615476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant } 5715476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant { 5815476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant std::cmatch m; 5915476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant const char s[] = "ab"; 6015476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(!std::regex_search(s, m, std::regex("ba", std::regex_constants::awk))); 6115476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.size() == 0); 6215476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.empty()); 6315476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant } 6415476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant { 6515476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant std::cmatch m; 6615476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant const char s[] = "aab"; 6715476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(std::regex_search(s, m, std::regex("ab", std::regex_constants::awk))); 6815476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.size() == 1); 6915476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.prefix().matched); 7015476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.prefix().first == s); 7115476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.prefix().second == m[0].first); 7215476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(!m.suffix().matched); 7315476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.suffix().first == m[0].second); 7415476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.suffix().second == s+3); 7515476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.length(0) == 2); 7615476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.position(0) == 1); 7715476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.str(0) == "ab"); 7815476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant } 7915476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant { 8015476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant std::cmatch m; 8115476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant const char s[] = "aab"; 8215476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(!std::regex_search(s, m, std::regex("ab", std::regex_constants::awk), 8315476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant std::regex_constants::match_continuous)); 8415476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.size() == 0); 8515476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant } 8615476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant { 8715476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant std::cmatch m; 8815476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant const char s[] = "abcd"; 8915476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(std::regex_search(s, m, std::regex("bc", std::regex_constants::awk))); 9015476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.size() == 1); 9115476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.prefix().matched); 9215476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.prefix().first == s); 9315476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.prefix().second == m[0].first); 9415476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.suffix().matched); 9515476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.suffix().first == m[0].second); 9615476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.suffix().second == s+4); 9715476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.length(0) == 2); 9815476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.position(0) == 1); 9915476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.str(0) == "bc"); 10015476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant } 10115476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant { 10215476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant std::cmatch m; 10315476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant const char s[] = "abbc"; 10415476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(std::regex_search(s, m, std::regex("ab*c", std::regex_constants::awk))); 10515476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.size() == 1); 10615476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(!m.prefix().matched); 10715476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.prefix().first == s); 10815476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.prefix().second == m[0].first); 10915476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(!m.suffix().matched); 11015476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.suffix().first == m[0].second); 11115476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.suffix().second == s+4); 11215476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.length(0) == 4); 11315476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.position(0) == 0); 11415476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.str(0) == s); 11515476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant } 11615476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant { 11715476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant std::cmatch m; 11815476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant const char s[] = "ababc"; 11915476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(std::regex_search(s, m, std::regex("(ab)*c", std::regex_constants::awk))); 12015476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.size() == 2); 12115476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(!m.prefix().matched); 12215476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.prefix().first == s); 12315476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.prefix().second == m[0].first); 12415476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(!m.suffix().matched); 12515476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.suffix().first == m[0].second); 12615476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.suffix().second == s+5); 12715476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.length(0) == 5); 12815476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.position(0) == 0); 12915476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.str(0) == s); 13015476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.length(1) == 2); 13115476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.position(1) == 2); 13215476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.str(1) == "ab"); 13315476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant } 13415476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant { 13515476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant std::cmatch m; 13615476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant const char s[] = "abcdefghijk"; 13715476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(std::regex_search(s, m, std::regex("cd((e)fg)hi", 13815476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant std::regex_constants::awk))); 13915476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.size() == 3); 14015476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.prefix().matched); 14115476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.prefix().first == s); 14215476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.prefix().second == m[0].first); 14315476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.suffix().matched); 14415476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.suffix().first == m[0].second); 14515476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.suffix().second == s+std::regex_traits<char>::length(s)); 14615476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.length(0) == 7); 14715476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.position(0) == 2); 14815476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.str(0) == "cdefghi"); 14915476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.length(1) == 3); 15015476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.position(1) == 4); 15115476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.str(1) == "efg"); 15215476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.length(2) == 1); 15315476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.position(2) == 4); 15415476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.str(2) == "e"); 15515476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant } 15615476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant { 15715476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant std::cmatch m; 15815476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant const char s[] = "abc"; 15915476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(std::regex_search(s, m, std::regex("^abc", std::regex_constants::awk))); 16015476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.size() == 1); 16115476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(!m.prefix().matched); 16215476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.prefix().first == s); 16315476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.prefix().second == m[0].first); 16415476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(!m.suffix().matched); 16515476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.suffix().first == m[0].second); 16615476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.suffix().second == s+3); 16715476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.length(0) == 3); 16815476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.position(0) == 0); 16915476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.str(0) == s); 17015476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant } 17115476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant { 17215476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant std::cmatch m; 17315476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant const char s[] = "abcd"; 17415476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(std::regex_search(s, m, std::regex("^abc", std::regex_constants::awk))); 17515476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.size() == 1); 17615476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(!m.prefix().matched); 17715476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.prefix().first == s); 17815476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.prefix().second == m[0].first); 17915476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.suffix().matched); 18015476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.suffix().first == m[0].second); 18115476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.suffix().second == s+4); 18215476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.length(0) == 3); 18315476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.position(0) == 0); 18415476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.str(0) == "abc"); 18515476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant } 18615476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant { 18715476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant std::cmatch m; 18815476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant const char s[] = "aabc"; 18915476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(!std::regex_search(s, m, std::regex("^abc", std::regex_constants::awk))); 19015476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.size() == 0); 19115476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant } 19215476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant { 19315476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant std::cmatch m; 19415476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant const char s[] = "abc"; 19515476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(std::regex_search(s, m, std::regex("abc$", std::regex_constants::awk))); 19615476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.size() == 1); 19715476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(!m.prefix().matched); 19815476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.prefix().first == s); 19915476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.prefix().second == m[0].first); 20015476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(!m.suffix().matched); 20115476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.suffix().first == m[0].second); 20215476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.suffix().second == s+3); 20315476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.length(0) == 3); 20415476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.position(0) == 0); 20515476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.str(0) == s); 20615476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant } 20715476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant { 20815476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant std::cmatch m; 20915476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant const char s[] = "efabc"; 21015476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(std::regex_search(s, m, std::regex("abc$", std::regex_constants::awk))); 21115476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.size() == 1); 21215476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.prefix().matched); 21315476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.prefix().first == s); 21415476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.prefix().second == m[0].first); 21515476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(!m.suffix().matched); 21615476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.suffix().first == m[0].second); 21715476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.suffix().second == s+5); 21815476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.length(0) == 3); 21915476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.position(0) == 2); 22015476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.str(0) == s+2); 22115476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant } 22215476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant { 22315476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant std::cmatch m; 22415476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant const char s[] = "efabcg"; 22515476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(!std::regex_search(s, m, std::regex("abc$", std::regex_constants::awk))); 22615476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.size() == 0); 22715476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant } 22815476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant { 22915476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant std::cmatch m; 23015476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant const char s[] = "abc"; 23115476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(std::regex_search(s, m, std::regex("a.c", std::regex_constants::awk))); 23215476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.size() == 1); 23315476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(!m.prefix().matched); 23415476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.prefix().first == s); 23515476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.prefix().second == m[0].first); 23615476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(!m.suffix().matched); 23715476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.suffix().first == m[0].second); 23815476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.suffix().second == s+3); 23915476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.length(0) == 3); 24015476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.position(0) == 0); 24115476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.str(0) == s); 24215476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant } 24315476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant { 24415476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant std::cmatch m; 24515476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant const char s[] = "acc"; 24615476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(std::regex_search(s, m, std::regex("a.c", std::regex_constants::awk))); 24715476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.size() == 1); 24815476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(!m.prefix().matched); 24915476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.prefix().first == s); 25015476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.prefix().second == m[0].first); 25115476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(!m.suffix().matched); 25215476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.suffix().first == m[0].second); 25315476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.suffix().second == s+3); 25415476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.length(0) == 3); 25515476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.position(0) == 0); 25615476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.str(0) == s); 25715476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant } 25815476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant { 25915476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant std::cmatch m; 26015476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant const char s[] = "acc"; 26115476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(std::regex_search(s, m, std::regex("a.c", std::regex_constants::awk))); 26215476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.size() == 1); 26315476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(!m.prefix().matched); 26415476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.prefix().first == s); 26515476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.prefix().second == m[0].first); 26615476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(!m.suffix().matched); 26715476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.suffix().first == m[0].second); 26815476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.suffix().second == s+3); 26915476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.length(0) == 3); 27015476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.position(0) == 0); 27115476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.str(0) == s); 27215476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant } 27315476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant { 27415476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant std::cmatch m; 27515476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant const char s[] = "abcdef"; 27615476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(std::regex_search(s, m, std::regex("(.*).*", std::regex_constants::awk))); 27715476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.size() == 2); 27815476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(!m.prefix().matched); 27915476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.prefix().first == s); 28015476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.prefix().second == m[0].first); 28115476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(!m.suffix().matched); 28215476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.suffix().first == m[0].second); 28315476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.suffix().second == s+6); 28415476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.length(0) == 6); 28515476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.position(0) == 0); 28615476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.str(0) == s); 28715476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.length(1) == 6); 28815476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.position(1) == 0); 28915476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.str(1) == s); 29015476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant } 29115476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant { 29215476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant std::cmatch m; 29315476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant const char s[] = "bc"; 29415476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(std::regex_search(s, m, std::regex("(a*)*", std::regex_constants::awk))); 29515476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.size() == 2); 29615476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(!m.prefix().matched); 29715476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.prefix().first == s); 29815476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.prefix().second == m[0].first); 29915476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.suffix().matched); 30015476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.suffix().first == m[0].second); 30115476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.suffix().second == s+2); 30215476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.length(0) == 0); 30315476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.position(0) == 0); 30415476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.str(0) == ""); 30515476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.length(1) == 0); 30615476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.position(1) == 0); 30715476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.str(1) == ""); 30815476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant } 30915476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant { 31015476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant std::cmatch m; 31115476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant const char s[] = "abbc"; 31215476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(!std::regex_search(s, m, std::regex("ab{3,5}c", std::regex_constants::awk))); 31315476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.size() == 0); 31415476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant } 31515476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant { 31615476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant std::cmatch m; 31715476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant const char s[] = "abbbc"; 31815476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(std::regex_search(s, m, std::regex("ab{3,5}c", std::regex_constants::awk))); 31915476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.size() == 1); 32015476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(!m.prefix().matched); 32115476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.prefix().first == s); 32215476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.prefix().second == m[0].first); 32315476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(!m.suffix().matched); 32415476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.suffix().first == m[0].second); 32515476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.suffix().second == m[0].second); 32615476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.length(0) == std::char_traits<char>::length(s)); 32715476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.position(0) == 0); 32815476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.str(0) == s); 32915476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant } 33015476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant { 33115476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant std::cmatch m; 33215476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant const char s[] = "abbbbc"; 33315476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(std::regex_search(s, m, std::regex("ab{3,5}c", std::regex_constants::awk))); 33415476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.size() == 1); 33515476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(!m.prefix().matched); 33615476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.prefix().first == s); 33715476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.prefix().second == m[0].first); 33815476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(!m.suffix().matched); 33915476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.suffix().first == m[0].second); 34015476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.suffix().second == m[0].second); 34115476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.length(0) == std::char_traits<char>::length(s)); 34215476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.position(0) == 0); 34315476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.str(0) == s); 34415476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant } 34515476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant { 34615476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant std::cmatch m; 34715476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant const char s[] = "abbbbbc"; 34815476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(std::regex_search(s, m, std::regex("ab{3,5}c", std::regex_constants::awk))); 34915476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.size() == 1); 35015476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(!m.prefix().matched); 35115476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.prefix().first == s); 35215476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.prefix().second == m[0].first); 35315476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(!m.suffix().matched); 35415476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.suffix().first == m[0].second); 35515476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.suffix().second == m[0].second); 35615476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.length(0) == std::char_traits<char>::length(s)); 35715476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.position(0) == 0); 35815476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.str(0) == s); 35915476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant } 36015476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant { 36115476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant std::cmatch m; 36215476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant const char s[] = "adefc"; 36315476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(!std::regex_search(s, m, std::regex("ab{3,5}c", std::regex_constants::awk))); 36415476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.size() == 0); 36515476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant } 36615476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant { 36715476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant std::cmatch m; 36815476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant const char s[] = "abbbbbbc"; 36915476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(!std::regex_search(s, m, std::regex("ab{3,5}c", std::regex_constants::awk))); 37015476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.size() == 0); 37115476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant } 37215476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant { 37315476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant std::cmatch m; 37415476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant const char s[] = "adec"; 37515476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(!std::regex_search(s, m, std::regex("a.{3,5}c", std::regex_constants::awk))); 37615476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.size() == 0); 37715476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant } 37815476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant { 37915476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant std::cmatch m; 38015476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant const char s[] = "adefc"; 38115476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(std::regex_search(s, m, std::regex("a.{3,5}c", std::regex_constants::awk))); 38215476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.size() == 1); 38315476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(!m.prefix().matched); 38415476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.prefix().first == s); 38515476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.prefix().second == m[0].first); 38615476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(!m.suffix().matched); 38715476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.suffix().first == m[0].second); 38815476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.suffix().second == m[0].second); 38915476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.length(0) == std::char_traits<char>::length(s)); 39015476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.position(0) == 0); 39115476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.str(0) == s); 39215476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant } 39315476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant { 39415476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant std::cmatch m; 39515476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant const char s[] = "adefgc"; 39615476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(std::regex_search(s, m, std::regex("a.{3,5}c", std::regex_constants::awk))); 39715476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.size() == 1); 39815476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(!m.prefix().matched); 39915476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.prefix().first == s); 40015476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.prefix().second == m[0].first); 40115476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(!m.suffix().matched); 40215476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.suffix().first == m[0].second); 40315476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.suffix().second == m[0].second); 40415476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.length(0) == std::char_traits<char>::length(s)); 40515476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.position(0) == 0); 40615476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.str(0) == s); 40715476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant } 40815476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant { 40915476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant std::cmatch m; 41015476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant const char s[] = "adefghc"; 41115476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(std::regex_search(s, m, std::regex("a.{3,5}c", std::regex_constants::awk))); 41215476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.size() == 1); 41315476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(!m.prefix().matched); 41415476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.prefix().first == s); 41515476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.prefix().second == m[0].first); 41615476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(!m.suffix().matched); 41715476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.suffix().first == m[0].second); 41815476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.suffix().second == m[0].second); 41915476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.length(0) == std::char_traits<char>::length(s)); 42015476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.position(0) == 0); 42115476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.str(0) == s); 42215476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant } 42315476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant { 42415476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant std::cmatch m; 42515476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant const char s[] = "adefghic"; 42615476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(!std::regex_search(s, m, std::regex("a.{3,5}c", std::regex_constants::awk))); 42715476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.size() == 0); 42815476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant } 42915476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant { 43015476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant std::cmatch m; 43115476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant const char s[] = "tournament"; 43215476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(std::regex_search(s, m, std::regex("tour|to|tournament", 43315476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant std::regex_constants::awk))); 43415476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.size() == 1); 43515476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(!m.prefix().matched); 43615476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.prefix().first == s); 43715476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.prefix().second == m[0].first); 43815476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(!m.suffix().matched); 43915476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.suffix().first == m[0].second); 44015476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.suffix().second == m[0].second); 44115476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.length(0) == std::char_traits<char>::length(s)); 44215476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.position(0) == 0); 44315476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.str(0) == s); 44415476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant } 44515476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant { 44615476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant std::cmatch m; 44715476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant const char s[] = "tournamenttotour"; 44815476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(std::regex_search(s, m, std::regex("(tour|to|tournament)+", 44915476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant std::regex_constants::awk | std::regex_constants::nosubs))); 45015476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.size() == 1); 45115476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(!m.prefix().matched); 45215476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.prefix().first == s); 45315476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.prefix().second == m[0].first); 45415476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(!m.suffix().matched); 45515476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.suffix().first == m[0].second); 45615476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.suffix().second == m[0].second); 45715476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.length(0) == std::char_traits<char>::length(s)); 45815476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.position(0) == 0); 45915476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.str(0) == s); 46015476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant } 46115476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant { 46215476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant std::cmatch m; 46315476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant const char s[] = "ttotour"; 46415476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(std::regex_search(s, m, std::regex("(tour|to|t)+", 46515476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant std::regex_constants::awk))); 46615476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.size() == 2); 46715476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(!m.prefix().matched); 46815476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.prefix().first == s); 46915476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.prefix().second == m[0].first); 47015476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(!m.suffix().matched); 47115476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.suffix().first == m[0].second); 47215476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.suffix().second == m[0].second); 47315476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.length(0) == std::char_traits<char>::length(s)); 47415476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.position(0) == 0); 47515476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.str(0) == s); 47615476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.length(1) == 4); 47715476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.position(1) == 3); 47815476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.str(1) == "tour"); 47915476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant } 48015476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant { 48115476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant std::cmatch m; 48215476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant const char s[] = "-ab,ab-"; 48315476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(!std::regex_search(s, m, std::regex("-(.*),\1-", std::regex_constants::awk))); 48415476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.size() == 0); 48515476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant } 48615476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant { 48715476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant std::cmatch m; 48815476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant const char s[] = "-ab,ab-"; 48915476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(std::regex_search(s, m, std::regex("-.*,.*-", std::regex_constants::awk))); 49015476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.size() == 1); 49115476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(!m.prefix().matched); 49215476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.prefix().first == s); 49315476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.prefix().second == m[0].first); 49415476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(!m.suffix().matched); 49515476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.suffix().first == m[0].second); 49615476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.suffix().second == m[0].second); 49715476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.length(0) == std::char_traits<char>::length(s)); 49815476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.position(0) == 0); 49915476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.str(0) == s); 50015476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant } 50115476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant { 50215476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant std::cmatch m; 50315476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant const char s[] = "a"; 50415476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(std::regex_search(s, m, std::regex("^[a]$", 50515476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant std::regex_constants::awk))); 50615476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.size() == 1); 50715476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(!m.prefix().matched); 50815476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.prefix().first == s); 50915476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.prefix().second == m[0].first); 51015476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(!m.suffix().matched); 51115476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.suffix().first == m[0].second); 51215476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.suffix().second == m[0].second); 51315476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.length(0) == 1); 51415476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.position(0) == 0); 51515476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.str(0) == "a"); 51615476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant } 51715476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant { 51815476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant std::cmatch m; 51915476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant const char s[] = "a"; 52015476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(std::regex_search(s, m, std::regex("^[ab]$", 52115476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant std::regex_constants::awk))); 52215476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.size() == 1); 52315476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(!m.prefix().matched); 52415476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.prefix().first == s); 52515476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.prefix().second == m[0].first); 52615476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(!m.suffix().matched); 52715476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.suffix().first == m[0].second); 52815476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.suffix().second == m[0].second); 52915476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.length(0) == 1); 53015476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.position(0) == 0); 53115476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.str(0) == "a"); 53215476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant } 53315476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant { 53415476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant std::cmatch m; 53515476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant const char s[] = "c"; 53615476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(std::regex_search(s, m, std::regex("^[a-f]$", 53715476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant std::regex_constants::awk))); 53815476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.size() == 1); 53915476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(!m.prefix().matched); 54015476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.prefix().first == s); 54115476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.prefix().second == m[0].first); 54215476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(!m.suffix().matched); 54315476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.suffix().first == m[0].second); 54415476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.suffix().second == m[0].second); 54515476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.length(0) == 1); 54615476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.position(0) == 0); 54715476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.str(0) == s); 54815476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant } 54915476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant { 55015476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant std::cmatch m; 55115476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant const char s[] = "g"; 55215476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(!std::regex_search(s, m, std::regex("^[a-f]$", 55315476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant std::regex_constants::awk))); 55415476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.size() == 0); 55515476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant } 55615476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant { 55715476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant std::cmatch m; 55815476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant const char s[] = "Iraqi"; 55915476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(std::regex_search(s, m, std::regex("q[^u]", 56015476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant std::regex_constants::awk))); 56115476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.size() == 1); 56215476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.prefix().matched); 56315476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.prefix().first == s); 56415476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.prefix().second == m[0].first); 56515476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(!m.suffix().matched); 56615476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.suffix().first == m[0].second); 56715476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.suffix().second == m[0].second); 56815476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.length(0) == 2); 56915476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.position(0) == 3); 57015476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.str(0) == "qi"); 57115476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant } 57215476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant { 57315476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant std::cmatch m; 57415476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant const char s[] = "Iraq"; 57515476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(!std::regex_search(s, m, std::regex("q[^u]", 57615476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant std::regex_constants::awk))); 57715476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.size() == 0); 57815476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant } 57915476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant { 58015476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant std::cmatch m; 58115476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant const char s[] = "AmB"; 58215476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(std::regex_search(s, m, std::regex("A[[:lower:]]B", 58315476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant std::regex_constants::awk))); 58415476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.size() == 1); 58515476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(!m.prefix().matched); 58615476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.prefix().first == s); 58715476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.prefix().second == m[0].first); 58815476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(!m.suffix().matched); 58915476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.suffix().first == m[0].second); 59015476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.suffix().second == m[0].second); 59115476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.length(0) == std::char_traits<char>::length(s)); 59215476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.position(0) == 0); 59315476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.str(0) == s); 59415476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant } 59515476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant { 59615476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant std::cmatch m; 59715476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant const char s[] = "AMB"; 59815476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(!std::regex_search(s, m, std::regex("A[[:lower:]]B", 59915476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant std::regex_constants::awk))); 60015476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.size() == 0); 60115476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant } 60215476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant { 60315476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant std::cmatch m; 60415476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant const char s[] = "AMB"; 60515476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(std::regex_search(s, m, std::regex("A[^[:lower:]]B", 60615476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant std::regex_constants::awk))); 60715476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.size() == 1); 60815476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(!m.prefix().matched); 60915476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.prefix().first == s); 61015476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.prefix().second == m[0].first); 61115476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(!m.suffix().matched); 61215476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.suffix().first == m[0].second); 61315476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.suffix().second == m[0].second); 61415476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.length(0) == std::char_traits<char>::length(s)); 61515476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.position(0) == 0); 61615476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.str(0) == s); 61715476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant } 61815476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant { 61915476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant std::cmatch m; 62015476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant const char s[] = "AmB"; 62115476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(!std::regex_search(s, m, std::regex("A[^[:lower:]]B", 62215476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant std::regex_constants::awk))); 62315476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.size() == 0); 62415476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant } 62515476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant { 62615476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant std::cmatch m; 62715476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant const char s[] = "A5B"; 62815476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(!std::regex_search(s, m, std::regex("A[^[:lower:]0-9]B", 62915476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant std::regex_constants::awk))); 63015476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.size() == 0); 63115476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant } 63215476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant { 63315476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant std::cmatch m; 63415476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant const char s[] = "A?B"; 63515476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(std::regex_search(s, m, std::regex("A[^[:lower:]0-9]B", 63615476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant std::regex_constants::awk))); 63715476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.size() == 1); 63815476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(!m.prefix().matched); 63915476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.prefix().first == s); 64015476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.prefix().second == m[0].first); 64115476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(!m.suffix().matched); 64215476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.suffix().first == m[0].second); 64315476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.suffix().second == m[0].second); 64415476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.length(0) == std::char_traits<char>::length(s)); 64515476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.position(0) == 0); 64615476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.str(0) == s); 64715476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant } 64815476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant { 64915476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant std::cmatch m; 65015476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant const char s[] = "-"; 65115476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(std::regex_search(s, m, std::regex("[a[.hyphen.]z]", 65215476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant std::regex_constants::awk))); 65315476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.size() == 1); 65415476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(!m.prefix().matched); 65515476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.prefix().first == s); 65615476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.prefix().second == m[0].first); 65715476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(!m.suffix().matched); 65815476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.suffix().first == m[0].second); 65915476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.suffix().second == m[0].second); 66015476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.length(0) == std::char_traits<char>::length(s)); 66115476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.position(0) == 0); 66215476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.str(0) == s); 66315476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant } 66415476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant { 66515476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant std::cmatch m; 66615476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant const char s[] = "z"; 66715476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(std::regex_search(s, m, std::regex("[a[.hyphen.]z]", 66815476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant std::regex_constants::awk))); 66915476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.size() == 1); 67015476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(!m.prefix().matched); 67115476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.prefix().first == s); 67215476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.prefix().second == m[0].first); 67315476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(!m.suffix().matched); 67415476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.suffix().first == m[0].second); 67515476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.suffix().second == m[0].second); 67615476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.length(0) == std::char_traits<char>::length(s)); 67715476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.position(0) == 0); 67815476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.str(0) == s); 67915476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant } 68015476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant { 68115476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant std::cmatch m; 68215476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant const char s[] = "m"; 68315476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(!std::regex_search(s, m, std::regex("[a[.hyphen.]z]", 68415476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant std::regex_constants::awk))); 68515476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.size() == 0); 68615476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant } 68715476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant std::locale::global(std::locale("cs_CZ.ISO8859-2")); 68815476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant { 68915476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant std::cmatch m; 69015476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant const char s[] = "m"; 69115476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(std::regex_search(s, m, std::regex("[a[=M=]z]", 69215476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant std::regex_constants::awk))); 69315476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.size() == 1); 69415476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(!m.prefix().matched); 69515476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.prefix().first == s); 69615476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.prefix().second == m[0].first); 69715476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(!m.suffix().matched); 69815476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.suffix().first == m[0].second); 69915476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.suffix().second == m[0].second); 70015476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.length(0) == std::char_traits<char>::length(s)); 70115476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.position(0) == 0); 70215476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.str(0) == s); 70315476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant } 70415476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant { 70515476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant std::cmatch m; 70615476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant const char s[] = "Ch"; 70715476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(std::regex_search(s, m, std::regex("[a[.ch.]z]", 70815476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant std::regex_constants::awk | std::regex_constants::icase))); 70915476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.size() == 1); 71015476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(!m.prefix().matched); 71115476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.prefix().first == s); 71215476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.prefix().second == m[0].first); 71315476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(!m.suffix().matched); 71415476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.suffix().first == m[0].second); 71515476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.suffix().second == m[0].second); 71615476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.length(0) == std::char_traits<char>::length(s)); 71715476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.position(0) == 0); 71815476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.str(0) == s); 71915476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant } 72015476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant std::locale::global(std::locale("C")); 72115476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant { 72215476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant std::cmatch m; 72315476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant const char s[] = "m"; 72415476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(!std::regex_search(s, m, std::regex("[a[=M=]z]", 72515476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant std::regex_constants::awk))); 72615476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.size() == 0); 72715476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant } 72815476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant { 72915476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant std::cmatch m; 73015476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant const char s[] = "01a45cef9"; 73115476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(std::regex_search(s, m, std::regex("[ace1-9]*", 73215476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant std::regex_constants::awk))); 73315476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.size() == 1); 73415476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(!m.prefix().matched); 73515476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.prefix().first == s); 73615476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.prefix().second == m[0].first); 73715476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.suffix().matched); 73815476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.suffix().first == m[0].second); 73915476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.suffix().second == s + std::char_traits<char>::length(s)); 74015476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.length(0) == 0); 74115476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.position(0) == 0); 74215476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.str(0) == ""); 74315476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant } 74415476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant { 74515476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant std::cmatch m; 74615476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant const char s[] = "01a45cef9"; 74715476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(std::regex_search(s, m, std::regex("[ace1-9]+", 74815476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant std::regex_constants::awk))); 74915476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.size() == 1); 75015476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.prefix().matched); 75115476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.prefix().first == s); 75215476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.prefix().second == m[0].first); 75315476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.suffix().matched); 75415476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.suffix().first == m[0].second); 75515476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.suffix().second == s + std::char_traits<char>::length(s)); 75615476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.length(0) == 6); 75715476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.position(0) == 1); 75815476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.str(0) == "1a45ce"); 75915476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant } 76015476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant { 76115476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant const char r[] = "^[-+]?[0-9]+[CF]$"; 76215476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant std::ptrdiff_t sr = std::char_traits<char>::length(r); 76315476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant typedef forward_iterator<const char*> FI; 76415476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant typedef bidirectional_iterator<const char*> BI; 76515476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant std::regex regex(FI(r), FI(r+sr), std::regex_constants::awk); 76615476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant std::match_results<BI> m; 76715476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant const char s[] = "-40C"; 76815476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant std::ptrdiff_t ss = std::char_traits<char>::length(s); 76915476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(std::regex_search(BI(s), BI(s+ss), m, regex)); 77015476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.size() == 1); 77115476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(!m.prefix().matched); 77215476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.prefix().first == BI(s)); 77315476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.prefix().second == m[0].first); 77415476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(!m.suffix().matched); 77515476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.suffix().first == m[0].second); 77615476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.suffix().second == m[0].second); 77715476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.length(0) == 4); 77815476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.position(0) == 0); 77915476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.str(0) == s); 78015476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant } 78115476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant { 78215476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant std::cmatch m; 78315476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant const char s[] = "\n\n\n"; 78415476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(std::regex_search(s, m, std::regex("[\\n]+", 78515476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant std::regex_constants::awk))); 78615476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.size() == 1); 78715476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(!m.prefix().matched); 78815476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.prefix().first == s); 78915476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.prefix().second == m[0].first); 79015476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(!m.suffix().matched); 79115476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.suffix().first == m[0].second); 79215476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.suffix().second == s + std::char_traits<char>::length(s)); 79315476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.length(0) == std::char_traits<char>::length(s)); 79415476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.position(0) == 0); 79515476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.str(0) == s); 79615476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant } 79715476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant { 79815476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant std::wcmatch m; 79915476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant const wchar_t s[] = L"a"; 80015476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(std::regex_search(s, m, std::wregex(L"a", std::regex_constants::awk))); 80115476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.size() == 1); 80215476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(!m.empty()); 80315476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(!m.prefix().matched); 80415476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.prefix().first == s); 80515476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.prefix().second == m[0].first); 80615476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(!m.suffix().matched); 80715476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.suffix().first == m[0].second); 80815476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.suffix().second == s+1); 80915476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.length(0) == 1); 81015476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.position(0) == 0); 81115476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.str(0) == L"a"); 81215476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant } 81315476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant { 81415476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant std::wcmatch m; 81515476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant const wchar_t s[] = L"ab"; 81615476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(std::regex_search(s, m, std::wregex(L"ab", std::regex_constants::awk))); 81715476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.size() == 1); 81815476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(!m.prefix().matched); 81915476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.prefix().first == s); 82015476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.prefix().second == m[0].first); 82115476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(!m.suffix().matched); 82215476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.suffix().first == m[0].second); 82315476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.suffix().second == s+2); 82415476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.length(0) == 2); 82515476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.position(0) == 0); 82615476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.str(0) == L"ab"); 82715476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant } 82815476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant { 82915476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant std::wcmatch m; 83015476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant const wchar_t s[] = L"ab"; 83115476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(!std::regex_search(s, m, std::wregex(L"ba", std::regex_constants::awk))); 83215476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.size() == 0); 83315476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.empty()); 83415476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant } 83515476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant { 83615476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant std::wcmatch m; 83715476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant const wchar_t s[] = L"aab"; 83815476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(std::regex_search(s, m, std::wregex(L"ab", std::regex_constants::awk))); 83915476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.size() == 1); 84015476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.prefix().matched); 84115476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.prefix().first == s); 84215476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.prefix().second == m[0].first); 84315476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(!m.suffix().matched); 84415476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.suffix().first == m[0].second); 84515476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.suffix().second == s+3); 84615476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.length(0) == 2); 84715476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.position(0) == 1); 84815476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.str(0) == L"ab"); 84915476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant } 85015476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant { 85115476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant std::wcmatch m; 85215476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant const wchar_t s[] = L"aab"; 85315476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(!std::regex_search(s, m, std::wregex(L"ab", std::regex_constants::awk), 85415476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant std::regex_constants::match_continuous)); 85515476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.size() == 0); 85615476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant } 85715476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant { 85815476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant std::wcmatch m; 85915476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant const wchar_t s[] = L"abcd"; 86015476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(std::regex_search(s, m, std::wregex(L"bc", std::regex_constants::awk))); 86115476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.size() == 1); 86215476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.prefix().matched); 86315476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.prefix().first == s); 86415476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.prefix().second == m[0].first); 86515476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.suffix().matched); 86615476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.suffix().first == m[0].second); 86715476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.suffix().second == s+4); 86815476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.length(0) == 2); 86915476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.position(0) == 1); 87015476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.str(0) == L"bc"); 87115476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant } 87215476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant { 87315476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant std::wcmatch m; 87415476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant const wchar_t s[] = L"abbc"; 87515476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(std::regex_search(s, m, std::wregex(L"ab*c", std::regex_constants::awk))); 87615476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.size() == 1); 87715476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(!m.prefix().matched); 87815476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.prefix().first == s); 87915476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.prefix().second == m[0].first); 88015476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(!m.suffix().matched); 88115476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.suffix().first == m[0].second); 88215476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.suffix().second == s+4); 88315476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.length(0) == 4); 88415476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.position(0) == 0); 88515476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.str(0) == s); 88615476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant } 88715476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant { 88815476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant std::wcmatch m; 88915476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant const wchar_t s[] = L"ababc"; 89015476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(std::regex_search(s, m, std::wregex(L"(ab)*c", std::regex_constants::awk))); 89115476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.size() == 2); 89215476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(!m.prefix().matched); 89315476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.prefix().first == s); 89415476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.prefix().second == m[0].first); 89515476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(!m.suffix().matched); 89615476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.suffix().first == m[0].second); 89715476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.suffix().second == s+5); 89815476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.length(0) == 5); 89915476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.position(0) == 0); 90015476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.str(0) == s); 90115476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.length(1) == 2); 90215476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.position(1) == 2); 90315476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.str(1) == L"ab"); 90415476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant } 90515476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant { 90615476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant std::wcmatch m; 90715476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant const wchar_t s[] = L"abcdefghijk"; 90815476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(std::regex_search(s, m, std::wregex(L"cd((e)fg)hi", 90915476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant std::regex_constants::awk))); 91015476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.size() == 3); 91115476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.prefix().matched); 91215476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.prefix().first == s); 91315476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.prefix().second == m[0].first); 91415476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.suffix().matched); 91515476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.suffix().first == m[0].second); 91615476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.suffix().second == s+std::regex_traits<wchar_t>::length(s)); 91715476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.length(0) == 7); 91815476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.position(0) == 2); 91915476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.str(0) == L"cdefghi"); 92015476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.length(1) == 3); 92115476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.position(1) == 4); 92215476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.str(1) == L"efg"); 92315476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.length(2) == 1); 92415476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.position(2) == 4); 92515476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.str(2) == L"e"); 92615476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant } 92715476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant { 92815476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant std::wcmatch m; 92915476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant const wchar_t s[] = L"abc"; 93015476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(std::regex_search(s, m, std::wregex(L"^abc", std::regex_constants::awk))); 93115476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.size() == 1); 93215476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(!m.prefix().matched); 93315476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.prefix().first == s); 93415476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.prefix().second == m[0].first); 93515476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(!m.suffix().matched); 93615476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.suffix().first == m[0].second); 93715476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.suffix().second == s+3); 93815476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.length(0) == 3); 93915476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.position(0) == 0); 94015476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.str(0) == s); 94115476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant } 94215476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant { 94315476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant std::wcmatch m; 94415476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant const wchar_t s[] = L"abcd"; 94515476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(std::regex_search(s, m, std::wregex(L"^abc", std::regex_constants::awk))); 94615476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.size() == 1); 94715476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(!m.prefix().matched); 94815476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.prefix().first == s); 94915476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.prefix().second == m[0].first); 95015476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.suffix().matched); 95115476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.suffix().first == m[0].second); 95215476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.suffix().second == s+4); 95315476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.length(0) == 3); 95415476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.position(0) == 0); 95515476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.str(0) == L"abc"); 95615476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant } 95715476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant { 95815476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant std::wcmatch m; 95915476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant const wchar_t s[] = L"aabc"; 96015476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(!std::regex_search(s, m, std::wregex(L"^abc", std::regex_constants::awk))); 96115476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.size() == 0); 96215476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant } 96315476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant { 96415476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant std::wcmatch m; 96515476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant const wchar_t s[] = L"abc"; 96615476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(std::regex_search(s, m, std::wregex(L"abc$", std::regex_constants::awk))); 96715476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.size() == 1); 96815476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(!m.prefix().matched); 96915476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.prefix().first == s); 97015476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.prefix().second == m[0].first); 97115476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(!m.suffix().matched); 97215476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.suffix().first == m[0].second); 97315476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.suffix().second == s+3); 97415476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.length(0) == 3); 97515476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.position(0) == 0); 97615476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.str(0) == s); 97715476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant } 97815476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant { 97915476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant std::wcmatch m; 98015476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant const wchar_t s[] = L"efabc"; 98115476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(std::regex_search(s, m, std::wregex(L"abc$", std::regex_constants::awk))); 98215476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.size() == 1); 98315476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.prefix().matched); 98415476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.prefix().first == s); 98515476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.prefix().second == m[0].first); 98615476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(!m.suffix().matched); 98715476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.suffix().first == m[0].second); 98815476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.suffix().second == s+5); 98915476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.length(0) == 3); 99015476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.position(0) == 2); 99115476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.str(0) == s+2); 99215476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant } 99315476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant { 99415476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant std::wcmatch m; 99515476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant const wchar_t s[] = L"efabcg"; 99615476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(!std::regex_search(s, m, std::wregex(L"abc$", std::regex_constants::awk))); 99715476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.size() == 0); 99815476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant } 99915476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant { 100015476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant std::wcmatch m; 100115476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant const wchar_t s[] = L"abc"; 100215476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(std::regex_search(s, m, std::wregex(L"a.c", std::regex_constants::awk))); 100315476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.size() == 1); 100415476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(!m.prefix().matched); 100515476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.prefix().first == s); 100615476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.prefix().second == m[0].first); 100715476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(!m.suffix().matched); 100815476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.suffix().first == m[0].second); 100915476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.suffix().second == s+3); 101015476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.length(0) == 3); 101115476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.position(0) == 0); 101215476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.str(0) == s); 101315476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant } 101415476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant { 101515476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant std::wcmatch m; 101615476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant const wchar_t s[] = L"acc"; 101715476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(std::regex_search(s, m, std::wregex(L"a.c", std::regex_constants::awk))); 101815476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.size() == 1); 101915476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(!m.prefix().matched); 102015476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.prefix().first == s); 102115476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.prefix().second == m[0].first); 102215476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(!m.suffix().matched); 102315476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.suffix().first == m[0].second); 102415476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.suffix().second == s+3); 102515476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.length(0) == 3); 102615476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.position(0) == 0); 102715476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.str(0) == s); 102815476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant } 102915476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant { 103015476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant std::wcmatch m; 103115476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant const wchar_t s[] = L"acc"; 103215476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(std::regex_search(s, m, std::wregex(L"a.c", std::regex_constants::awk))); 103315476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.size() == 1); 103415476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(!m.prefix().matched); 103515476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.prefix().first == s); 103615476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.prefix().second == m[0].first); 103715476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(!m.suffix().matched); 103815476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.suffix().first == m[0].second); 103915476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.suffix().second == s+3); 104015476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.length(0) == 3); 104115476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.position(0) == 0); 104215476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.str(0) == s); 104315476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant } 104415476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant { 104515476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant std::wcmatch m; 104615476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant const wchar_t s[] = L"abcdef"; 104715476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(std::regex_search(s, m, std::wregex(L"(.*).*", std::regex_constants::awk))); 104815476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.size() == 2); 104915476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(!m.prefix().matched); 105015476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.prefix().first == s); 105115476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.prefix().second == m[0].first); 105215476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(!m.suffix().matched); 105315476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.suffix().first == m[0].second); 105415476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.suffix().second == s+6); 105515476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.length(0) == 6); 105615476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.position(0) == 0); 105715476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.str(0) == s); 105815476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.length(1) == 6); 105915476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.position(1) == 0); 106015476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.str(1) == s); 106115476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant } 106215476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant { 106315476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant std::wcmatch m; 106415476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant const wchar_t s[] = L"bc"; 106515476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(std::regex_search(s, m, std::wregex(L"(a*)*", std::regex_constants::awk))); 106615476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.size() == 2); 106715476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(!m.prefix().matched); 106815476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.prefix().first == s); 106915476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.prefix().second == m[0].first); 107015476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.suffix().matched); 107115476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.suffix().first == m[0].second); 107215476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.suffix().second == s+2); 107315476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.length(0) == 0); 107415476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.position(0) == 0); 107515476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.str(0) == L""); 107615476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.length(1) == 0); 107715476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.position(1) == 0); 107815476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.str(1) == L""); 107915476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant } 108015476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant { 108115476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant std::wcmatch m; 108215476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant const wchar_t s[] = L"abbc"; 108315476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(!std::regex_search(s, m, std::wregex(L"ab{3,5}c", std::regex_constants::awk))); 108415476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.size() == 0); 108515476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant } 108615476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant { 108715476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant std::wcmatch m; 108815476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant const wchar_t s[] = L"abbbc"; 108915476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(std::regex_search(s, m, std::wregex(L"ab{3,5}c", std::regex_constants::awk))); 109015476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.size() == 1); 109115476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(!m.prefix().matched); 109215476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.prefix().first == s); 109315476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.prefix().second == m[0].first); 109415476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(!m.suffix().matched); 109515476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.suffix().first == m[0].second); 109615476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.suffix().second == m[0].second); 109715476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.length(0) == std::char_traits<wchar_t>::length(s)); 109815476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.position(0) == 0); 109915476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.str(0) == s); 110015476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant } 110115476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant { 110215476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant std::wcmatch m; 110315476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant const wchar_t s[] = L"abbbbc"; 110415476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(std::regex_search(s, m, std::wregex(L"ab{3,5}c", std::regex_constants::awk))); 110515476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.size() == 1); 110615476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(!m.prefix().matched); 110715476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.prefix().first == s); 110815476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.prefix().second == m[0].first); 110915476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(!m.suffix().matched); 111015476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.suffix().first == m[0].second); 111115476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.suffix().second == m[0].second); 111215476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.length(0) == std::char_traits<wchar_t>::length(s)); 111315476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.position(0) == 0); 111415476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.str(0) == s); 111515476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant } 111615476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant { 111715476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant std::wcmatch m; 111815476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant const wchar_t s[] = L"abbbbbc"; 111915476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(std::regex_search(s, m, std::wregex(L"ab{3,5}c", std::regex_constants::awk))); 112015476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.size() == 1); 112115476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(!m.prefix().matched); 112215476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.prefix().first == s); 112315476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.prefix().second == m[0].first); 112415476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(!m.suffix().matched); 112515476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.suffix().first == m[0].second); 112615476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.suffix().second == m[0].second); 112715476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.length(0) == std::char_traits<wchar_t>::length(s)); 112815476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.position(0) == 0); 112915476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.str(0) == s); 113015476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant } 113115476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant { 113215476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant std::wcmatch m; 113315476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant const wchar_t s[] = L"adefc"; 113415476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(!std::regex_search(s, m, std::wregex(L"ab{3,5}c", std::regex_constants::awk))); 113515476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.size() == 0); 113615476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant } 113715476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant { 113815476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant std::wcmatch m; 113915476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant const wchar_t s[] = L"abbbbbbc"; 114015476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(!std::regex_search(s, m, std::wregex(L"ab{3,5}c", std::regex_constants::awk))); 114115476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.size() == 0); 114215476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant } 114315476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant { 114415476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant std::wcmatch m; 114515476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant const wchar_t s[] = L"adec"; 114615476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(!std::regex_search(s, m, std::wregex(L"a.{3,5}c", std::regex_constants::awk))); 114715476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.size() == 0); 114815476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant } 114915476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant { 115015476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant std::wcmatch m; 115115476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant const wchar_t s[] = L"adefc"; 115215476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(std::regex_search(s, m, std::wregex(L"a.{3,5}c", std::regex_constants::awk))); 115315476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.size() == 1); 115415476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(!m.prefix().matched); 115515476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.prefix().first == s); 115615476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.prefix().second == m[0].first); 115715476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(!m.suffix().matched); 115815476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.suffix().first == m[0].second); 115915476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.suffix().second == m[0].second); 116015476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.length(0) == std::char_traits<wchar_t>::length(s)); 116115476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.position(0) == 0); 116215476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.str(0) == s); 116315476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant } 116415476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant { 116515476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant std::wcmatch m; 116615476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant const wchar_t s[] = L"adefgc"; 116715476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(std::regex_search(s, m, std::wregex(L"a.{3,5}c", std::regex_constants::awk))); 116815476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.size() == 1); 116915476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(!m.prefix().matched); 117015476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.prefix().first == s); 117115476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.prefix().second == m[0].first); 117215476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(!m.suffix().matched); 117315476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.suffix().first == m[0].second); 117415476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.suffix().second == m[0].second); 117515476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.length(0) == std::char_traits<wchar_t>::length(s)); 117615476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.position(0) == 0); 117715476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.str(0) == s); 117815476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant } 117915476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant { 118015476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant std::wcmatch m; 118115476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant const wchar_t s[] = L"adefghc"; 118215476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(std::regex_search(s, m, std::wregex(L"a.{3,5}c", std::regex_constants::awk))); 118315476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.size() == 1); 118415476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(!m.prefix().matched); 118515476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.prefix().first == s); 118615476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.prefix().second == m[0].first); 118715476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(!m.suffix().matched); 118815476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.suffix().first == m[0].second); 118915476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.suffix().second == m[0].second); 119015476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.length(0) == std::char_traits<wchar_t>::length(s)); 119115476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.position(0) == 0); 119215476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.str(0) == s); 119315476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant } 119415476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant { 119515476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant std::wcmatch m; 119615476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant const wchar_t s[] = L"adefghic"; 119715476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(!std::regex_search(s, m, std::wregex(L"a.{3,5}c", std::regex_constants::awk))); 119815476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.size() == 0); 119915476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant } 120015476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant { 120115476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant std::wcmatch m; 120215476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant const wchar_t s[] = L"tournament"; 120315476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(std::regex_search(s, m, std::wregex(L"tour|to|tournament", 120415476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant std::regex_constants::awk))); 120515476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.size() == 1); 120615476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(!m.prefix().matched); 120715476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.prefix().first == s); 120815476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.prefix().second == m[0].first); 120915476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(!m.suffix().matched); 121015476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.suffix().first == m[0].second); 121115476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.suffix().second == m[0].second); 121215476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.length(0) == std::char_traits<wchar_t>::length(s)); 121315476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.position(0) == 0); 121415476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.str(0) == s); 121515476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant } 121615476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant { 121715476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant std::wcmatch m; 121815476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant const wchar_t s[] = L"tournamenttotour"; 121915476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(std::regex_search(s, m, std::wregex(L"(tour|to|tournament)+", 122015476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant std::regex_constants::awk | std::regex_constants::nosubs))); 122115476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.size() == 1); 122215476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(!m.prefix().matched); 122315476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.prefix().first == s); 122415476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.prefix().second == m[0].first); 122515476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(!m.suffix().matched); 122615476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.suffix().first == m[0].second); 122715476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.suffix().second == m[0].second); 122815476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.length(0) == std::char_traits<wchar_t>::length(s)); 122915476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.position(0) == 0); 123015476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.str(0) == s); 123115476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant } 123215476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant { 123315476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant std::wcmatch m; 123415476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant const wchar_t s[] = L"ttotour"; 123515476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(std::regex_search(s, m, std::wregex(L"(tour|to|t)+", 123615476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant std::regex_constants::awk))); 123715476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.size() == 2); 123815476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(!m.prefix().matched); 123915476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.prefix().first == s); 124015476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.prefix().second == m[0].first); 124115476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(!m.suffix().matched); 124215476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.suffix().first == m[0].second); 124315476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.suffix().second == m[0].second); 124415476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.length(0) == std::char_traits<wchar_t>::length(s)); 124515476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.position(0) == 0); 124615476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.str(0) == s); 124715476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.length(1) == 4); 124815476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.position(1) == 3); 124915476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.str(1) == L"tour"); 125015476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant } 125115476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant { 125215476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant std::wcmatch m; 125315476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant const wchar_t s[] = L"-ab,ab-"; 125415476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(!std::regex_search(s, m, std::wregex(L"-(.*),\1-", std::regex_constants::awk))); 125515476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.size() == 0); 125615476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant } 125715476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant { 125815476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant std::wcmatch m; 125915476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant const wchar_t s[] = L"-ab,ab-"; 126015476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(std::regex_search(s, m, std::wregex(L"-.*,.*-", std::regex_constants::awk))); 126115476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.size() == 1); 126215476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(!m.prefix().matched); 126315476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.prefix().first == s); 126415476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.prefix().second == m[0].first); 126515476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(!m.suffix().matched); 126615476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.suffix().first == m[0].second); 126715476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.suffix().second == m[0].second); 126815476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.length(0) == std::char_traits<wchar_t>::length(s)); 126915476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.position(0) == 0); 127015476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.str(0) == s); 127115476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant } 127215476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant { 127315476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant std::wcmatch m; 127415476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant const wchar_t s[] = L"a"; 127515476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(std::regex_search(s, m, std::wregex(L"^[a]$", 127615476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant std::regex_constants::awk))); 127715476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.size() == 1); 127815476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(!m.prefix().matched); 127915476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.prefix().first == s); 128015476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.prefix().second == m[0].first); 128115476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(!m.suffix().matched); 128215476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.suffix().first == m[0].second); 128315476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.suffix().second == m[0].second); 128415476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.length(0) == 1); 128515476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.position(0) == 0); 128615476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.str(0) == L"a"); 128715476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant } 128815476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant { 128915476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant std::wcmatch m; 129015476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant const wchar_t s[] = L"a"; 129115476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(std::regex_search(s, m, std::wregex(L"^[ab]$", 129215476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant std::regex_constants::awk))); 129315476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.size() == 1); 129415476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(!m.prefix().matched); 129515476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.prefix().first == s); 129615476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.prefix().second == m[0].first); 129715476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(!m.suffix().matched); 129815476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.suffix().first == m[0].second); 129915476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.suffix().second == m[0].second); 130015476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.length(0) == 1); 130115476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.position(0) == 0); 130215476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.str(0) == L"a"); 130315476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant } 130415476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant { 130515476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant std::wcmatch m; 130615476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant const wchar_t s[] = L"c"; 130715476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(std::regex_search(s, m, std::wregex(L"^[a-f]$", 130815476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant std::regex_constants::awk))); 130915476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.size() == 1); 131015476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(!m.prefix().matched); 131115476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.prefix().first == s); 131215476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.prefix().second == m[0].first); 131315476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(!m.suffix().matched); 131415476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.suffix().first == m[0].second); 131515476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.suffix().second == m[0].second); 131615476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.length(0) == 1); 131715476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.position(0) == 0); 131815476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.str(0) == s); 131915476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant } 132015476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant { 132115476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant std::wcmatch m; 132215476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant const wchar_t s[] = L"g"; 132315476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(!std::regex_search(s, m, std::wregex(L"^[a-f]$", 132415476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant std::regex_constants::awk))); 132515476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.size() == 0); 132615476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant } 132715476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant { 132815476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant std::wcmatch m; 132915476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant const wchar_t s[] = L"Iraqi"; 133015476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(std::regex_search(s, m, std::wregex(L"q[^u]", 133115476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant std::regex_constants::awk))); 133215476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.size() == 1); 133315476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.prefix().matched); 133415476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.prefix().first == s); 133515476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.prefix().second == m[0].first); 133615476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(!m.suffix().matched); 133715476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.suffix().first == m[0].second); 133815476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.suffix().second == m[0].second); 133915476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.length(0) == 2); 134015476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.position(0) == 3); 134115476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.str(0) == L"qi"); 134215476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant } 134315476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant { 134415476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant std::wcmatch m; 134515476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant const wchar_t s[] = L"Iraq"; 134615476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(!std::regex_search(s, m, std::wregex(L"q[^u]", 134715476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant std::regex_constants::awk))); 134815476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.size() == 0); 134915476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant } 135015476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant { 135115476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant std::wcmatch m; 135215476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant const wchar_t s[] = L"AmB"; 135315476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(std::regex_search(s, m, std::wregex(L"A[[:lower:]]B", 135415476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant std::regex_constants::awk))); 135515476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.size() == 1); 135615476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(!m.prefix().matched); 135715476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.prefix().first == s); 135815476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.prefix().second == m[0].first); 135915476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(!m.suffix().matched); 136015476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.suffix().first == m[0].second); 136115476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.suffix().second == m[0].second); 136215476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.length(0) == std::char_traits<wchar_t>::length(s)); 136315476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.position(0) == 0); 136415476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.str(0) == s); 136515476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant } 136615476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant { 136715476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant std::wcmatch m; 136815476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant const wchar_t s[] = L"AMB"; 136915476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(!std::regex_search(s, m, std::wregex(L"A[[:lower:]]B", 137015476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant std::regex_constants::awk))); 137115476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.size() == 0); 137215476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant } 137315476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant { 137415476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant std::wcmatch m; 137515476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant const wchar_t s[] = L"AMB"; 137615476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(std::regex_search(s, m, std::wregex(L"A[^[:lower:]]B", 137715476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant std::regex_constants::awk))); 137815476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.size() == 1); 137915476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(!m.prefix().matched); 138015476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.prefix().first == s); 138115476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.prefix().second == m[0].first); 138215476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(!m.suffix().matched); 138315476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.suffix().first == m[0].second); 138415476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.suffix().second == m[0].second); 138515476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.length(0) == std::char_traits<wchar_t>::length(s)); 138615476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.position(0) == 0); 138715476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.str(0) == s); 138815476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant } 138915476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant { 139015476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant std::wcmatch m; 139115476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant const wchar_t s[] = L"AmB"; 139215476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(!std::regex_search(s, m, std::wregex(L"A[^[:lower:]]B", 139315476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant std::regex_constants::awk))); 139415476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.size() == 0); 139515476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant } 139615476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant { 139715476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant std::wcmatch m; 139815476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant const wchar_t s[] = L"A5B"; 139915476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(!std::regex_search(s, m, std::wregex(L"A[^[:lower:]0-9]B", 140015476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant std::regex_constants::awk))); 140115476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.size() == 0); 140215476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant } 140315476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant { 140415476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant std::wcmatch m; 140515476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant const wchar_t s[] = L"A?B"; 140615476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(std::regex_search(s, m, std::wregex(L"A[^[:lower:]0-9]B", 140715476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant std::regex_constants::awk))); 140815476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.size() == 1); 140915476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(!m.prefix().matched); 141015476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.prefix().first == s); 141115476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.prefix().second == m[0].first); 141215476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(!m.suffix().matched); 141315476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.suffix().first == m[0].second); 141415476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.suffix().second == m[0].second); 141515476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.length(0) == std::char_traits<wchar_t>::length(s)); 141615476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.position(0) == 0); 141715476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.str(0) == s); 141815476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant } 141915476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant { 142015476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant std::wcmatch m; 142115476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant const wchar_t s[] = L"-"; 142215476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(std::regex_search(s, m, std::wregex(L"[a[.hyphen.]z]", 142315476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant std::regex_constants::awk))); 142415476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.size() == 1); 142515476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(!m.prefix().matched); 142615476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.prefix().first == s); 142715476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.prefix().second == m[0].first); 142815476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(!m.suffix().matched); 142915476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.suffix().first == m[0].second); 143015476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.suffix().second == m[0].second); 143115476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.length(0) == std::char_traits<wchar_t>::length(s)); 143215476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.position(0) == 0); 143315476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.str(0) == s); 143415476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant } 143515476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant { 143615476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant std::wcmatch m; 143715476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant const wchar_t s[] = L"z"; 143815476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(std::regex_search(s, m, std::wregex(L"[a[.hyphen.]z]", 143915476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant std::regex_constants::awk))); 144015476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.size() == 1); 144115476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(!m.prefix().matched); 144215476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.prefix().first == s); 144315476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.prefix().second == m[0].first); 144415476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(!m.suffix().matched); 144515476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.suffix().first == m[0].second); 144615476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.suffix().second == m[0].second); 144715476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.length(0) == std::char_traits<wchar_t>::length(s)); 144815476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.position(0) == 0); 144915476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.str(0) == s); 145015476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant } 145115476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant { 145215476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant std::wcmatch m; 145315476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant const wchar_t s[] = L"m"; 145415476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(!std::regex_search(s, m, std::wregex(L"[a[.hyphen.]z]", 145515476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant std::regex_constants::awk))); 145615476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.size() == 0); 145715476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant } 145815476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant std::locale::global(std::locale("cs_CZ.ISO8859-2")); 145915476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant { 146015476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant std::wcmatch m; 146115476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant const wchar_t s[] = L"m"; 146215476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(std::regex_search(s, m, std::wregex(L"[a[=M=]z]", 146315476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant std::regex_constants::awk))); 146415476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.size() == 1); 146515476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(!m.prefix().matched); 146615476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.prefix().first == s); 146715476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.prefix().second == m[0].first); 146815476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(!m.suffix().matched); 146915476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.suffix().first == m[0].second); 147015476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.suffix().second == m[0].second); 147115476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.length(0) == std::char_traits<wchar_t>::length(s)); 147215476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.position(0) == 0); 147315476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.str(0) == s); 147415476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant } 147515476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant { 147615476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant std::wcmatch m; 147715476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant const wchar_t s[] = L"Ch"; 147815476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(std::regex_search(s, m, std::wregex(L"[a[.ch.]z]", 147915476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant std::regex_constants::awk | std::regex_constants::icase))); 148015476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.size() == 1); 148115476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(!m.prefix().matched); 148215476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.prefix().first == s); 148315476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.prefix().second == m[0].first); 148415476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(!m.suffix().matched); 148515476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.suffix().first == m[0].second); 148615476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.suffix().second == m[0].second); 148715476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.length(0) == std::char_traits<wchar_t>::length(s)); 148815476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.position(0) == 0); 148915476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.str(0) == s); 149015476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant } 149115476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant std::locale::global(std::locale("C")); 149215476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant { 149315476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant std::wcmatch m; 149415476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant const wchar_t s[] = L"m"; 149515476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(!std::regex_search(s, m, std::wregex(L"[a[=M=]z]", 149615476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant std::regex_constants::awk))); 149715476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.size() == 0); 149815476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant } 149915476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant { 150015476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant std::wcmatch m; 150115476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant const wchar_t s[] = L"01a45cef9"; 150215476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(std::regex_search(s, m, std::wregex(L"[ace1-9]*", 150315476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant std::regex_constants::awk))); 150415476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.size() == 1); 150515476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(!m.prefix().matched); 150615476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.prefix().first == s); 150715476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.prefix().second == m[0].first); 150815476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.suffix().matched); 150915476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.suffix().first == m[0].second); 151015476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.suffix().second == s + std::char_traits<wchar_t>::length(s)); 151115476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.length(0) == 0); 151215476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.position(0) == 0); 151315476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.str(0) == L""); 151415476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant } 151515476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant { 151615476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant std::wcmatch m; 151715476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant const wchar_t s[] = L"01a45cef9"; 151815476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(std::regex_search(s, m, std::wregex(L"[ace1-9]+", 151915476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant std::regex_constants::awk))); 152015476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.size() == 1); 152115476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.prefix().matched); 152215476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.prefix().first == s); 152315476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.prefix().second == m[0].first); 152415476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.suffix().matched); 152515476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.suffix().first == m[0].second); 152615476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.suffix().second == s + std::char_traits<wchar_t>::length(s)); 152715476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.length(0) == 6); 152815476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.position(0) == 1); 152915476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.str(0) == L"1a45ce"); 153015476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant } 153115476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant { 153215476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant const wchar_t r[] = L"^[-+]?[0-9]+[CF]$"; 153315476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant std::ptrdiff_t sr = std::char_traits<wchar_t>::length(r); 153415476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant typedef forward_iterator<const wchar_t*> FI; 153515476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant typedef bidirectional_iterator<const wchar_t*> BI; 153615476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant std::wregex regex(FI(r), FI(r+sr), std::regex_constants::awk); 153715476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant std::match_results<BI> m; 153815476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant const wchar_t s[] = L"-40C"; 153915476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant std::ptrdiff_t ss = std::char_traits<wchar_t>::length(s); 154015476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(std::regex_search(BI(s), BI(s+ss), m, regex)); 154115476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.size() == 1); 154215476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(!m.prefix().matched); 154315476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.prefix().first == BI(s)); 154415476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.prefix().second == m[0].first); 154515476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(!m.suffix().matched); 154615476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.suffix().first == m[0].second); 154715476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.suffix().second == m[0].second); 154815476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.length(0) == 4); 154915476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.position(0) == 0); 155015476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.str(0) == s); 155115476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant } 155215476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant { 155315476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant std::wcmatch m; 155415476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant const wchar_t s[] = L"\n\n\n"; 155515476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(std::regex_search(s, m, std::wregex(L"[\\n]+", 155615476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant std::regex_constants::awk))); 155715476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.size() == 1); 155815476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(!m.prefix().matched); 155915476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.prefix().first == s); 156015476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.prefix().second == m[0].first); 156115476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(!m.suffix().matched); 156215476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.suffix().first == m[0].second); 156315476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.suffix().second == s + std::char_traits<wchar_t>::length(s)); 156415476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.length(0) == std::char_traits<wchar_t>::length(s)); 156515476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.position(0) == 0); 156615476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant assert(m.str(0) == s); 156715476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant } 156815476f345d78e8d9e533bd45a685c4b4480e6908Howard Hinnant} 1569