awk.pass.cpp revision 8b00e6c96091c828b40ac410b6f123c7429a653d
1aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant//===----------------------------------------------------------------------===// 2aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant// 3aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant// The LLVM Compiler Infrastructure 4aa78f9cdb3c8a049660deb39c9296501d2467d78Howard 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. 7aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant// 8aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant//===----------------------------------------------------------------------===// 9aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant 10aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant// <regex> 11aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant 12aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant// template <class BidirectionalIterator, class Allocator, class charT, 13aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant// class traits> 14aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant// bool regex_match(BidirectionalIterator first, BidirectionalIterator last, 15aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant// match_results<BidirectionalIterator, Allocator>& m, 16aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant// const basic_regex<charT, traits>& e, 17aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant// regex_constants::match_flag_type flags 18aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant// = regex_constants::match_default); 19aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant 20aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant#include <regex> 21aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant#include <cassert> 22aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant 2383e2c4d877fe2d7793868b1c6a5d9525a7c4d431Marshall Clow#include "test_iterators.h" 24aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant 25aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnantint main() 26aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant{ 278b00e6c96091c828b40ac410b6f123c7429a653dHoward Hinnant/* { 28aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant std::cmatch m; 29aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant const char s[] = "a"; 30aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(std::regex_match(s, m, std::regex("a", std::regex_constants::awk))); 31aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.size() == 1); 32aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(!m.empty()); 33aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(!m.prefix().matched); 34aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.prefix().first == s); 35aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.prefix().second == m[0].first); 36aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(!m.suffix().matched); 37aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.suffix().first == m[0].second); 38aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.suffix().second == s+1); 39aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.length(0) == 1); 40aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.position(0) == 0); 41aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.str(0) == "a"); 42aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant } 43aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant { 44aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant std::cmatch m; 45aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant const char s[] = "ab"; 46aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(std::regex_match(s, m, std::regex("ab", std::regex_constants::awk))); 47aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.size() == 1); 48aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(!m.prefix().matched); 49aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.prefix().first == s); 50aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.prefix().second == m[0].first); 51aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(!m.suffix().matched); 52aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.suffix().first == m[0].second); 53aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.suffix().second == s+2); 54aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.length(0) == 2); 55aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.position(0) == 0); 56aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.str(0) == "ab"); 57aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant } 58aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant { 59aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant std::cmatch m; 60aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant const char s[] = "ab"; 61aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(!std::regex_match(s, m, std::regex("ba", std::regex_constants::awk))); 62aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.size() == 0); 63aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.empty()); 64aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant } 65aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant { 66aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant std::cmatch m; 67aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant const char s[] = "aab"; 68aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(!std::regex_match(s, m, std::regex("ab", std::regex_constants::awk))); 69aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.size() == 0); 70aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant } 71aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant { 72aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant std::cmatch m; 73aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant const char s[] = "aab"; 74aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(!std::regex_match(s, m, std::regex("ab", std::regex_constants::awk), 75aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant std::regex_constants::match_continuous)); 76aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.size() == 0); 77aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant } 78aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant { 79aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant std::cmatch m; 80aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant const char s[] = "abcd"; 81aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(!std::regex_match(s, m, std::regex("bc", std::regex_constants::awk))); 82aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.size() == 0); 83aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant } 84aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant { 85aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant std::cmatch m; 86aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant const char s[] = "abbc"; 87aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(std::regex_match(s, m, std::regex("ab*c", std::regex_constants::awk))); 88aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.size() == 1); 89aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(!m.prefix().matched); 90aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.prefix().first == s); 91aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.prefix().second == m[0].first); 92aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(!m.suffix().matched); 93aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.suffix().first == m[0].second); 94aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.suffix().second == s+4); 95aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.length(0) == 4); 96aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.position(0) == 0); 97aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.str(0) == s); 98aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant } 99aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant { 100aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant std::cmatch m; 101aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant const char s[] = "ababc"; 102aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(std::regex_match(s, m, std::regex("(ab)*c", std::regex_constants::awk))); 103aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.size() == 2); 104aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(!m.prefix().matched); 105aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.prefix().first == s); 106aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.prefix().second == m[0].first); 107aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(!m.suffix().matched); 108aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.suffix().first == m[0].second); 109aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.suffix().second == s+5); 110aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.length(0) == 5); 111aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.position(0) == 0); 112aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.str(0) == s); 113aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.length(1) == 2); 114aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.position(1) == 2); 115aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.str(1) == "ab"); 116aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant } 117aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant { 118aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant std::cmatch m; 119aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant const char s[] = "abcdefghijk"; 120aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(!std::regex_match(s, m, std::regex("cd((e)fg)hi", 121aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant std::regex_constants::awk))); 122aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.size() == 0); 123aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant } 124aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant { 125aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant std::cmatch m; 126aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant const char s[] = "abc"; 127aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(std::regex_match(s, m, std::regex("^abc", std::regex_constants::awk))); 128aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.size() == 1); 129aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(!m.prefix().matched); 130aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.prefix().first == s); 131aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.prefix().second == m[0].first); 132aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(!m.suffix().matched); 133aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.suffix().first == m[0].second); 134aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.suffix().second == s+3); 135aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.length(0) == 3); 136aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.position(0) == 0); 137aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.str(0) == s); 138aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant } 139aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant { 140aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant std::cmatch m; 141aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant const char s[] = "abcd"; 142aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(!std::regex_match(s, m, std::regex("^abc", std::regex_constants::awk))); 143aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.size() == 0); 144aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant } 145aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant { 146aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant std::cmatch m; 147aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant const char s[] = "aabc"; 148aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(!std::regex_match(s, m, std::regex("^abc", std::regex_constants::awk))); 149aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.size() == 0); 150aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant } 151aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant { 152aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant std::cmatch m; 153aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant const char s[] = "abc"; 154aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(std::regex_match(s, m, std::regex("abc$", std::regex_constants::awk))); 155aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.size() == 1); 156aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(!m.prefix().matched); 157aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.prefix().first == s); 158aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.prefix().second == m[0].first); 159aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(!m.suffix().matched); 160aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.suffix().first == m[0].second); 161aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.suffix().second == s+3); 162aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.length(0) == 3); 163aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.position(0) == 0); 164aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.str(0) == s); 165aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant } 166aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant { 167aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant std::cmatch m; 168aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant const char s[] = "efabc"; 169aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(!std::regex_match(s, m, std::regex("abc$", std::regex_constants::awk))); 170aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.size() == 0); 171aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant } 172aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant { 173aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant std::cmatch m; 174aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant const char s[] = "efabcg"; 175aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(!std::regex_match(s, m, std::regex("abc$", std::regex_constants::awk))); 176aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.size() == 0); 177aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant } 178aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant { 179aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant std::cmatch m; 180aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant const char s[] = "abc"; 181aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(std::regex_match(s, m, std::regex("a.c", std::regex_constants::awk))); 182aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.size() == 1); 183aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(!m.prefix().matched); 184aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.prefix().first == s); 185aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.prefix().second == m[0].first); 186aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(!m.suffix().matched); 187aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.suffix().first == m[0].second); 188aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.suffix().second == s+3); 189aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.length(0) == 3); 190aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.position(0) == 0); 191aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.str(0) == s); 192aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant } 193aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant { 194aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant std::cmatch m; 195aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant const char s[] = "acc"; 196aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(std::regex_match(s, m, std::regex("a.c", std::regex_constants::awk))); 197aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.size() == 1); 198aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(!m.prefix().matched); 199aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.prefix().first == s); 200aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.prefix().second == m[0].first); 201aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(!m.suffix().matched); 202aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.suffix().first == m[0].second); 203aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.suffix().second == s+3); 204aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.length(0) == 3); 205aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.position(0) == 0); 206aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.str(0) == s); 207aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant } 208aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant { 209aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant std::cmatch m; 210aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant const char s[] = "acc"; 211aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(std::regex_match(s, m, std::regex("a.c", std::regex_constants::awk))); 212aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.size() == 1); 213aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(!m.prefix().matched); 214aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.prefix().first == s); 215aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.prefix().second == m[0].first); 216aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(!m.suffix().matched); 217aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.suffix().first == m[0].second); 218aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.suffix().second == s+3); 219aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.length(0) == 3); 220aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.position(0) == 0); 221aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.str(0) == s); 222aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant } 223aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant { 224aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant std::cmatch m; 225aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant const char s[] = "abcdef"; 226aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(std::regex_match(s, m, std::regex("(.*).*", std::regex_constants::awk))); 227aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.size() == 2); 228aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(!m.prefix().matched); 229aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.prefix().first == s); 230aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.prefix().second == m[0].first); 231aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(!m.suffix().matched); 232aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.suffix().first == m[0].second); 233aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.suffix().second == s+6); 234aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.length(0) == 6); 235aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.position(0) == 0); 236aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.str(0) == s); 237aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.length(1) == 6); 238aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.position(1) == 0); 239aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.str(1) == s); 240aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant } 241aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant { 242aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant std::cmatch m; 243aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant const char s[] = "bc"; 244aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(!std::regex_match(s, m, std::regex("(a*)*", std::regex_constants::awk))); 245aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.size() == 0); 246aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant } 247aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant { 248aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant std::cmatch m; 249aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant const char s[] = "abbc"; 250aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(!std::regex_match(s, m, std::regex("ab{3,5}c", std::regex_constants::awk))); 251aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.size() == 0); 252aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant } 253aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant { 254aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant std::cmatch m; 255aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant const char s[] = "abbbc"; 256aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(std::regex_match(s, m, std::regex("ab{3,5}c", std::regex_constants::awk))); 257aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.size() == 1); 258aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(!m.prefix().matched); 259aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.prefix().first == s); 260aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.prefix().second == m[0].first); 261aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(!m.suffix().matched); 262aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.suffix().first == m[0].second); 263aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.suffix().second == m[0].second); 264aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.length(0) == std::char_traits<char>::length(s)); 265aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.position(0) == 0); 266aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.str(0) == s); 267aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant } 268aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant { 269aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant std::cmatch m; 270aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant const char s[] = "abbbbc"; 271aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(std::regex_match(s, m, std::regex("ab{3,5}c", std::regex_constants::awk))); 272aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.size() == 1); 273aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(!m.prefix().matched); 274aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.prefix().first == s); 275aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.prefix().second == m[0].first); 276aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(!m.suffix().matched); 277aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.suffix().first == m[0].second); 278aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.suffix().second == m[0].second); 279aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.length(0) == std::char_traits<char>::length(s)); 280aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.position(0) == 0); 281aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.str(0) == s); 282aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant } 283aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant { 284aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant std::cmatch m; 285aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant const char s[] = "abbbbbc"; 286aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(std::regex_match(s, m, std::regex("ab{3,5}c", std::regex_constants::awk))); 287aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.size() == 1); 288aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(!m.prefix().matched); 289aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.prefix().first == s); 290aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.prefix().second == m[0].first); 291aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(!m.suffix().matched); 292aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.suffix().first == m[0].second); 293aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.suffix().second == m[0].second); 294aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.length(0) == std::char_traits<char>::length(s)); 295aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.position(0) == 0); 296aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.str(0) == s); 297aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant } 298aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant { 299aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant std::cmatch m; 300aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant const char s[] = "adefc"; 301aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(!std::regex_match(s, m, std::regex("ab{3,5}c", std::regex_constants::awk))); 302aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.size() == 0); 303aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant } 304aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant { 305aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant std::cmatch m; 306aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant const char s[] = "abbbbbbc"; 307aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(!std::regex_match(s, m, std::regex("ab{3,5}c", std::regex_constants::awk))); 308aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.size() == 0); 309aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant } 310aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant { 311aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant std::cmatch m; 312aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant const char s[] = "adec"; 313aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(!std::regex_match(s, m, std::regex("a.{3,5}c", std::regex_constants::awk))); 314aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.size() == 0); 315aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant } 316aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant { 317aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant std::cmatch m; 318aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant const char s[] = "adefc"; 319aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(std::regex_match(s, m, std::regex("a.{3,5}c", std::regex_constants::awk))); 320aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.size() == 1); 321aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(!m.prefix().matched); 322aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.prefix().first == s); 323aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.prefix().second == m[0].first); 324aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(!m.suffix().matched); 325aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.suffix().first == m[0].second); 326aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.suffix().second == m[0].second); 327aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.length(0) == std::char_traits<char>::length(s)); 328aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.position(0) == 0); 329aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.str(0) == s); 330aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant } 331aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant { 332aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant std::cmatch m; 333aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant const char s[] = "adefgc"; 334aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(std::regex_match(s, m, std::regex("a.{3,5}c", std::regex_constants::awk))); 335aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.size() == 1); 336aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(!m.prefix().matched); 337aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.prefix().first == s); 338aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.prefix().second == m[0].first); 339aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(!m.suffix().matched); 340aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.suffix().first == m[0].second); 341aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.suffix().second == m[0].second); 342aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.length(0) == std::char_traits<char>::length(s)); 343aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.position(0) == 0); 344aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.str(0) == s); 345aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant } 346aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant { 347aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant std::cmatch m; 348aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant const char s[] = "adefghc"; 349aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(std::regex_match(s, m, std::regex("a.{3,5}c", std::regex_constants::awk))); 350aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.size() == 1); 351aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(!m.prefix().matched); 352aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.prefix().first == s); 353aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.prefix().second == m[0].first); 354aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(!m.suffix().matched); 355aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.suffix().first == m[0].second); 356aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.suffix().second == m[0].second); 357aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.length(0) == std::char_traits<char>::length(s)); 358aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.position(0) == 0); 359aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.str(0) == s); 360aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant } 361aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant { 362aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant std::cmatch m; 363aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant const char s[] = "adefghic"; 364aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(!std::regex_match(s, m, std::regex("a.{3,5}c", std::regex_constants::awk))); 365aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.size() == 0); 366aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant } 367aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant { 368aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant std::cmatch m; 369aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant const char s[] = "tournament"; 370aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(std::regex_match(s, m, std::regex("tour|to|tournament", 371aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant std::regex_constants::awk))); 372aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.size() == 1); 373aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(!m.prefix().matched); 374aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.prefix().first == s); 375aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.prefix().second == m[0].first); 376aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(!m.suffix().matched); 377aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.suffix().first == m[0].second); 378aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.suffix().second == m[0].second); 379aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.length(0) == std::char_traits<char>::length(s)); 380aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.position(0) == 0); 381aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.str(0) == s); 382aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant } 383aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant { 384aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant std::cmatch m; 385aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant const char s[] = "tournamenttotour"; 386aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(std::regex_match(s, m, std::regex("(tour|to|tournament)+", 387aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant std::regex_constants::awk | std::regex_constants::nosubs))); 388aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.size() == 1); 389aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(!m.prefix().matched); 390aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.prefix().first == s); 391aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.prefix().second == m[0].first); 392aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(!m.suffix().matched); 393aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.suffix().first == m[0].second); 394aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.suffix().second == m[0].second); 395aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.length(0) == std::char_traits<char>::length(s)); 396aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.position(0) == 0); 397aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.str(0) == s); 398aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant } 399aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant { 400aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant std::cmatch m; 401aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant const char s[] = "ttotour"; 402aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(std::regex_match(s, m, std::regex("(tour|to|t)+", 403aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant std::regex_constants::awk))); 404aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.size() == 2); 405aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(!m.prefix().matched); 406aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.prefix().first == s); 407aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.prefix().second == m[0].first); 408aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(!m.suffix().matched); 409aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.suffix().first == m[0].second); 410aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.suffix().second == m[0].second); 411aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.length(0) == std::char_traits<char>::length(s)); 412aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.position(0) == 0); 413aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.str(0) == s); 414aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.length(1) == 4); 415aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.position(1) == 3); 416aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.str(1) == "tour"); 417aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant } 418aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant { 419aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant std::cmatch m; 420aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant const char s[] = "-ab,ab-"; 421aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(!std::regex_match(s, m, std::regex("-(.*),\1-", std::regex_constants::awk))); 422aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.size() == 0); 423aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant } 424aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant { 425aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant std::cmatch m; 426aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant const char s[] = "-ab,ab-"; 427aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(std::regex_match(s, m, std::regex("-.*,.*-", std::regex_constants::awk))); 428aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.size() == 1); 429aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(!m.prefix().matched); 430aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.prefix().first == s); 431aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.prefix().second == m[0].first); 432aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(!m.suffix().matched); 433aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.suffix().first == m[0].second); 434aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.suffix().second == m[0].second); 435aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.length(0) == std::char_traits<char>::length(s)); 436aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.position(0) == 0); 437aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.str(0) == s); 438aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant } 439aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant { 440aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant std::cmatch m; 441aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant const char s[] = "a"; 442aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(std::regex_match(s, m, std::regex("^[a]$", 443aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant std::regex_constants::awk))); 444aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.size() == 1); 445aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(!m.prefix().matched); 446aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.prefix().first == s); 447aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.prefix().second == m[0].first); 448aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(!m.suffix().matched); 449aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.suffix().first == m[0].second); 450aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.suffix().second == m[0].second); 451aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.length(0) == 1); 452aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.position(0) == 0); 453aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.str(0) == "a"); 454aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant } 455aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant { 456aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant std::cmatch m; 457aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant const char s[] = "a"; 458aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(std::regex_match(s, m, std::regex("^[ab]$", 459aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant std::regex_constants::awk))); 460aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.size() == 1); 461aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(!m.prefix().matched); 462aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.prefix().first == s); 463aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.prefix().second == m[0].first); 464aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(!m.suffix().matched); 465aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.suffix().first == m[0].second); 466aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.suffix().second == m[0].second); 467aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.length(0) == 1); 468aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.position(0) == 0); 469aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.str(0) == "a"); 470aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant } 471aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant { 472aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant std::cmatch m; 473aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant const char s[] = "c"; 474aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(std::regex_match(s, m, std::regex("^[a-f]$", 475aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant std::regex_constants::awk))); 476aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.size() == 1); 477aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(!m.prefix().matched); 478aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.prefix().first == s); 479aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.prefix().second == m[0].first); 480aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(!m.suffix().matched); 481aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.suffix().first == m[0].second); 482aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.suffix().second == m[0].second); 483aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.length(0) == 1); 484aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.position(0) == 0); 485aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.str(0) == s); 486aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant } 487aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant { 488aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant std::cmatch m; 489aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant const char s[] = "g"; 490aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(!std::regex_match(s, m, std::regex("^[a-f]$", 491aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant std::regex_constants::awk))); 492aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.size() == 0); 493aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant } 494aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant { 495aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant std::cmatch m; 496aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant const char s[] = "Iraqi"; 497aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(!std::regex_match(s, m, std::regex("q[^u]", 498aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant std::regex_constants::awk))); 499aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.size() == 0); 500aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant } 501aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant { 502aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant std::cmatch m; 503aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant const char s[] = "Iraq"; 504aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(!std::regex_match(s, m, std::regex("q[^u]", 505aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant std::regex_constants::awk))); 506aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.size() == 0); 507aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant } 508aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant { 509aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant std::cmatch m; 510aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant const char s[] = "AmB"; 511aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(std::regex_match(s, m, std::regex("A[[:lower:]]B", 512aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant std::regex_constants::awk))); 513aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.size() == 1); 514aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(!m.prefix().matched); 515aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.prefix().first == s); 516aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.prefix().second == m[0].first); 517aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(!m.suffix().matched); 518aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.suffix().first == m[0].second); 519aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.suffix().second == m[0].second); 520aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.length(0) == std::char_traits<char>::length(s)); 521aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.position(0) == 0); 522aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.str(0) == s); 523aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant } 524aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant { 525aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant std::cmatch m; 526aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant const char s[] = "AMB"; 527aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(!std::regex_match(s, m, std::regex("A[[:lower:]]B", 528aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant std::regex_constants::awk))); 529aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.size() == 0); 530aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant } 531aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant { 532aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant std::cmatch m; 533aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant const char s[] = "AMB"; 534aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(std::regex_match(s, m, std::regex("A[^[:lower:]]B", 535aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant std::regex_constants::awk))); 536aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.size() == 1); 537aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(!m.prefix().matched); 538aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.prefix().first == s); 539aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.prefix().second == m[0].first); 540aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(!m.suffix().matched); 541aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.suffix().first == m[0].second); 542aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.suffix().second == m[0].second); 543aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.length(0) == std::char_traits<char>::length(s)); 544aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.position(0) == 0); 545aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.str(0) == s); 546aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant } 547aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant { 548aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant std::cmatch m; 549aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant const char s[] = "AmB"; 550aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(!std::regex_match(s, m, std::regex("A[^[:lower:]]B", 551aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant std::regex_constants::awk))); 552aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.size() == 0); 553aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant } 554aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant { 555aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant std::cmatch m; 556aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant const char s[] = "A5B"; 557aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(!std::regex_match(s, m, std::regex("A[^[:lower:]0-9]B", 558aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant std::regex_constants::awk))); 559aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.size() == 0); 560aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant } 561aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant { 562aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant std::cmatch m; 563aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant const char s[] = "A?B"; 564aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(std::regex_match(s, m, std::regex("A[^[:lower:]0-9]B", 565aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant std::regex_constants::awk))); 566aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.size() == 1); 567aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(!m.prefix().matched); 568aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.prefix().first == s); 569aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.prefix().second == m[0].first); 570aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(!m.suffix().matched); 571aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.suffix().first == m[0].second); 572aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.suffix().second == m[0].second); 573aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.length(0) == std::char_traits<char>::length(s)); 574aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.position(0) == 0); 575aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.str(0) == s); 576aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant } 577aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant { 578aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant std::cmatch m; 579aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant const char s[] = "-"; 580aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(std::regex_match(s, m, std::regex("[a[.hyphen.]z]", 581aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant std::regex_constants::awk))); 582aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.size() == 1); 583aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(!m.prefix().matched); 584aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.prefix().first == s); 585aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.prefix().second == m[0].first); 586aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(!m.suffix().matched); 587aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.suffix().first == m[0].second); 588aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.suffix().second == m[0].second); 589aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.length(0) == std::char_traits<char>::length(s)); 590aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.position(0) == 0); 591aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.str(0) == s); 592aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant } 593aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant { 594aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant std::cmatch m; 595aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant const char s[] = "z"; 596aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(std::regex_match(s, m, std::regex("[a[.hyphen.]z]", 597aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant std::regex_constants::awk))); 598aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.size() == 1); 599aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(!m.prefix().matched); 600aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.prefix().first == s); 601aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.prefix().second == m[0].first); 602aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(!m.suffix().matched); 603aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.suffix().first == m[0].second); 604aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.suffix().second == m[0].second); 605aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.length(0) == std::char_traits<char>::length(s)); 606aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.position(0) == 0); 607aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.str(0) == s); 608aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant } 609aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant { 610aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant std::cmatch m; 611aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant const char s[] = "m"; 612aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(!std::regex_match(s, m, std::regex("[a[.hyphen.]z]", 613aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant std::regex_constants::awk))); 614aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.size() == 0); 615aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant } 616aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant std::locale::global(std::locale("cs_CZ.ISO8859-2")); 6178b00e6c96091c828b40ac410b6f123c7429a653dHoward Hinnant*/ { 618aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant std::cmatch m; 619aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant const char s[] = "m"; 6208b00e6c96091c828b40ac410b6f123c7429a653dHoward Hinnant /* assert(std::regex_match(s, m,*/ std::regex("[a[=M=]z]"/*, 6218b00e6c96091c828b40ac410b6f123c7429a653dHoward Hinnant std::regex_constants::awk*/);//)); 6228b00e6c96091c828b40ac410b6f123c7429a653dHoward Hinnant/* assert(m.size() == 1); 623aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(!m.prefix().matched); 624aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.prefix().first == s); 625aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.prefix().second == m[0].first); 626aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(!m.suffix().matched); 627aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.suffix().first == m[0].second); 628aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.suffix().second == m[0].second); 629aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.length(0) == std::char_traits<char>::length(s)); 630aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.position(0) == 0); 631aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.str(0) == s); 6328b00e6c96091c828b40ac410b6f123c7429a653dHoward Hinnant*/ } 6338b00e6c96091c828b40ac410b6f123c7429a653dHoward Hinnant/* { 634aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant std::cmatch m; 635aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant const char s[] = "Ch"; 636aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(std::regex_match(s, m, std::regex("[a[.ch.]z]", 637aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant std::regex_constants::awk | std::regex_constants::icase))); 638aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.size() == 1); 639aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(!m.prefix().matched); 640aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.prefix().first == s); 641aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.prefix().second == m[0].first); 642aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(!m.suffix().matched); 643aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.suffix().first == m[0].second); 644aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.suffix().second == m[0].second); 645aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.length(0) == std::char_traits<char>::length(s)); 646aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.position(0) == 0); 647aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.str(0) == s); 648aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant } 649aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant std::locale::global(std::locale("C")); 650aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant { 651aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant std::cmatch m; 652aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant const char s[] = "m"; 653aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(!std::regex_match(s, m, std::regex("[a[=M=]z]", 654aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant std::regex_constants::awk))); 655aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.size() == 0); 656aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant } 657aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant { 658aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant std::cmatch m; 659aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant const char s[] = "01a45cef9"; 660aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(!std::regex_match(s, m, std::regex("[ace1-9]*", 661aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant std::regex_constants::awk))); 662aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.size() == 0); 663aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant } 664aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant { 665aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant std::cmatch m; 666aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant const char s[] = "01a45cef9"; 667aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(!std::regex_match(s, m, std::regex("[ace1-9]+", 668aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant std::regex_constants::awk))); 669aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.size() == 0); 670aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant } 671aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant { 672aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant const char r[] = "^[-+]?[0-9]+[CF]$"; 673aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant std::ptrdiff_t sr = std::char_traits<char>::length(r); 674aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant typedef forward_iterator<const char*> FI; 675aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant typedef bidirectional_iterator<const char*> BI; 676aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant std::regex regex(FI(r), FI(r+sr), std::regex_constants::awk); 677aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant std::match_results<BI> m; 678aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant const char s[] = "-40C"; 679aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant std::ptrdiff_t ss = std::char_traits<char>::length(s); 680aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(std::regex_match(BI(s), BI(s+ss), m, regex)); 681aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.size() == 1); 682aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(!m.prefix().matched); 683aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.prefix().first == BI(s)); 684aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.prefix().second == m[0].first); 685aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(!m.suffix().matched); 686aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.suffix().first == m[0].second); 687aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.suffix().second == m[0].second); 688aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.length(0) == 4); 689aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.position(0) == 0); 690aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.str(0) == s); 691aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant } 692aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant { 693aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant std::cmatch m; 694aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant const char s[] = "\n\n\n"; 695aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(std::regex_match(s, m, std::regex("[\\n]+", 696aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant std::regex_constants::awk))); 697aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.size() == 1); 698aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(!m.prefix().matched); 699aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.prefix().first == s); 700aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.prefix().second == m[0].first); 701aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(!m.suffix().matched); 702aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.suffix().first == m[0].second); 703aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.suffix().second == s + std::char_traits<char>::length(s)); 704aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.length(0) == std::char_traits<char>::length(s)); 705aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.position(0) == 0); 706aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.str(0) == s); 707aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant } 708aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant { 709aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant std::wcmatch m; 710aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant const wchar_t s[] = L"a"; 711aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(std::regex_match(s, m, std::wregex(L"a", std::regex_constants::awk))); 712aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.size() == 1); 713aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(!m.empty()); 714aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(!m.prefix().matched); 715aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.prefix().first == s); 716aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.prefix().second == m[0].first); 717aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(!m.suffix().matched); 718aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.suffix().first == m[0].second); 719aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.suffix().second == s+1); 720aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.length(0) == 1); 721aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.position(0) == 0); 722aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.str(0) == L"a"); 723aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant } 724aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant { 725aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant std::wcmatch m; 726aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant const wchar_t s[] = L"ab"; 727aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(std::regex_match(s, m, std::wregex(L"ab", std::regex_constants::awk))); 728aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.size() == 1); 729aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(!m.prefix().matched); 730aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.prefix().first == s); 731aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.prefix().second == m[0].first); 732aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(!m.suffix().matched); 733aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.suffix().first == m[0].second); 734aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.suffix().second == s+2); 735aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.length(0) == 2); 736aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.position(0) == 0); 737aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.str(0) == L"ab"); 738aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant } 739aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant { 740aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant std::wcmatch m; 741aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant const wchar_t s[] = L"ab"; 742aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(!std::regex_match(s, m, std::wregex(L"ba", std::regex_constants::awk))); 743aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.size() == 0); 744aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.empty()); 745aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant } 746aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant { 747aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant std::wcmatch m; 748aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant const wchar_t s[] = L"aab"; 749aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(!std::regex_match(s, m, std::wregex(L"ab", std::regex_constants::awk))); 750aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.size() == 0); 751aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant } 752aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant { 753aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant std::wcmatch m; 754aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant const wchar_t s[] = L"aab"; 755aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(!std::regex_match(s, m, std::wregex(L"ab", std::regex_constants::awk), 756aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant std::regex_constants::match_continuous)); 757aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.size() == 0); 758aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant } 759aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant { 760aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant std::wcmatch m; 761aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant const wchar_t s[] = L"abcd"; 762aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(!std::regex_match(s, m, std::wregex(L"bc", std::regex_constants::awk))); 763aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.size() == 0); 764aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant } 765aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant { 766aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant std::wcmatch m; 767aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant const wchar_t s[] = L"abbc"; 768aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(std::regex_match(s, m, std::wregex(L"ab*c", std::regex_constants::awk))); 769aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.size() == 1); 770aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(!m.prefix().matched); 771aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.prefix().first == s); 772aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.prefix().second == m[0].first); 773aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(!m.suffix().matched); 774aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.suffix().first == m[0].second); 775aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.suffix().second == s+4); 776aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.length(0) == 4); 777aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.position(0) == 0); 778aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.str(0) == s); 779aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant } 780aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant { 781aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant std::wcmatch m; 782aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant const wchar_t s[] = L"ababc"; 783aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(std::regex_match(s, m, std::wregex(L"(ab)*c", std::regex_constants::awk))); 784aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.size() == 2); 785aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(!m.prefix().matched); 786aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.prefix().first == s); 787aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.prefix().second == m[0].first); 788aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(!m.suffix().matched); 789aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.suffix().first == m[0].second); 790aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.suffix().second == s+5); 791aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.length(0) == 5); 792aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.position(0) == 0); 793aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.str(0) == s); 794aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.length(1) == 2); 795aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.position(1) == 2); 796aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.str(1) == L"ab"); 797aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant } 798aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant { 799aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant std::wcmatch m; 800aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant const wchar_t s[] = L"abcdefghijk"; 801aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(!std::regex_match(s, m, std::wregex(L"cd((e)fg)hi", 802aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant std::regex_constants::awk))); 803aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.size() == 0); 804aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant } 805aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant { 806aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant std::wcmatch m; 807aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant const wchar_t s[] = L"abc"; 808aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(std::regex_match(s, m, std::wregex(L"^abc", std::regex_constants::awk))); 809aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.size() == 1); 810aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(!m.prefix().matched); 811aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.prefix().first == s); 812aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.prefix().second == m[0].first); 813aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(!m.suffix().matched); 814aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.suffix().first == m[0].second); 815aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.suffix().second == s+3); 816aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.length(0) == 3); 817aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.position(0) == 0); 818aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.str(0) == s); 819aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant } 820aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant { 821aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant std::wcmatch m; 822aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant const wchar_t s[] = L"abcd"; 823aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(!std::regex_match(s, m, std::wregex(L"^abc", std::regex_constants::awk))); 824aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.size() == 0); 825aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant } 826aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant { 827aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant std::wcmatch m; 828aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant const wchar_t s[] = L"aabc"; 829aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(!std::regex_match(s, m, std::wregex(L"^abc", std::regex_constants::awk))); 830aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.size() == 0); 831aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant } 832aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant { 833aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant std::wcmatch m; 834aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant const wchar_t s[] = L"abc"; 835aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(std::regex_match(s, m, std::wregex(L"abc$", std::regex_constants::awk))); 836aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.size() == 1); 837aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(!m.prefix().matched); 838aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.prefix().first == s); 839aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.prefix().second == m[0].first); 840aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(!m.suffix().matched); 841aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.suffix().first == m[0].second); 842aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.suffix().second == s+3); 843aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.length(0) == 3); 844aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.position(0) == 0); 845aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.str(0) == s); 846aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant } 847aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant { 848aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant std::wcmatch m; 849aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant const wchar_t s[] = L"efabc"; 850aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(!std::regex_match(s, m, std::wregex(L"abc$", std::regex_constants::awk))); 851aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.size() == 0); 852aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant } 853aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant { 854aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant std::wcmatch m; 855aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant const wchar_t s[] = L"efabcg"; 856aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(!std::regex_match(s, m, std::wregex(L"abc$", std::regex_constants::awk))); 857aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.size() == 0); 858aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant } 859aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant { 860aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant std::wcmatch m; 861aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant const wchar_t s[] = L"abc"; 862aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(std::regex_match(s, m, std::wregex(L"a.c", std::regex_constants::awk))); 863aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.size() == 1); 864aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(!m.prefix().matched); 865aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.prefix().first == s); 866aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.prefix().second == m[0].first); 867aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(!m.suffix().matched); 868aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.suffix().first == m[0].second); 869aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.suffix().second == s+3); 870aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.length(0) == 3); 871aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.position(0) == 0); 872aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.str(0) == s); 873aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant } 874aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant { 875aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant std::wcmatch m; 876aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant const wchar_t s[] = L"acc"; 877aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(std::regex_match(s, m, std::wregex(L"a.c", std::regex_constants::awk))); 878aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.size() == 1); 879aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(!m.prefix().matched); 880aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.prefix().first == s); 881aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.prefix().second == m[0].first); 882aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(!m.suffix().matched); 883aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.suffix().first == m[0].second); 884aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.suffix().second == s+3); 885aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.length(0) == 3); 886aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.position(0) == 0); 887aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.str(0) == s); 888aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant } 889aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant { 890aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant std::wcmatch m; 891aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant const wchar_t s[] = L"acc"; 892aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(std::regex_match(s, m, std::wregex(L"a.c", std::regex_constants::awk))); 893aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.size() == 1); 894aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(!m.prefix().matched); 895aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.prefix().first == s); 896aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.prefix().second == m[0].first); 897aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(!m.suffix().matched); 898aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.suffix().first == m[0].second); 899aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.suffix().second == s+3); 900aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.length(0) == 3); 901aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.position(0) == 0); 902aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.str(0) == s); 903aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant } 904aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant { 905aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant std::wcmatch m; 906aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant const wchar_t s[] = L"abcdef"; 907aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(std::regex_match(s, m, std::wregex(L"(.*).*", std::regex_constants::awk))); 908aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.size() == 2); 909aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(!m.prefix().matched); 910aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.prefix().first == s); 911aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.prefix().second == m[0].first); 912aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(!m.suffix().matched); 913aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.suffix().first == m[0].second); 914aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.suffix().second == s+6); 915aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.length(0) == 6); 916aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.position(0) == 0); 917aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.str(0) == s); 918aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.length(1) == 6); 919aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.position(1) == 0); 920aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.str(1) == s); 921aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant } 922aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant { 923aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant std::wcmatch m; 924aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant const wchar_t s[] = L"bc"; 925aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(!std::regex_match(s, m, std::wregex(L"(a*)*", std::regex_constants::awk))); 926aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.size() == 0); 927aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant } 928aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant { 929aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant std::wcmatch m; 930aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant const wchar_t s[] = L"abbc"; 931aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(!std::regex_match(s, m, std::wregex(L"ab{3,5}c", std::regex_constants::awk))); 932aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.size() == 0); 933aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant } 934aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant { 935aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant std::wcmatch m; 936aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant const wchar_t s[] = L"abbbc"; 937aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(std::regex_match(s, m, std::wregex(L"ab{3,5}c", std::regex_constants::awk))); 938aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.size() == 1); 939aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(!m.prefix().matched); 940aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.prefix().first == s); 941aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.prefix().second == m[0].first); 942aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(!m.suffix().matched); 943aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.suffix().first == m[0].second); 944aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.suffix().second == m[0].second); 945aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.length(0) == std::char_traits<wchar_t>::length(s)); 946aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.position(0) == 0); 947aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.str(0) == s); 948aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant } 949aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant { 950aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant std::wcmatch m; 951aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant const wchar_t s[] = L"abbbbc"; 952aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(std::regex_match(s, m, std::wregex(L"ab{3,5}c", std::regex_constants::awk))); 953aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.size() == 1); 954aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(!m.prefix().matched); 955aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.prefix().first == s); 956aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.prefix().second == m[0].first); 957aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(!m.suffix().matched); 958aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.suffix().first == m[0].second); 959aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.suffix().second == m[0].second); 960aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.length(0) == std::char_traits<wchar_t>::length(s)); 961aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.position(0) == 0); 962aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.str(0) == s); 963aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant } 964aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant { 965aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant std::wcmatch m; 966aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant const wchar_t s[] = L"abbbbbc"; 967aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(std::regex_match(s, m, std::wregex(L"ab{3,5}c", std::regex_constants::awk))); 968aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.size() == 1); 969aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(!m.prefix().matched); 970aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.prefix().first == s); 971aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.prefix().second == m[0].first); 972aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(!m.suffix().matched); 973aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.suffix().first == m[0].second); 974aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.suffix().second == m[0].second); 975aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.length(0) == std::char_traits<wchar_t>::length(s)); 976aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.position(0) == 0); 977aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.str(0) == s); 978aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant } 979aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant { 980aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant std::wcmatch m; 981aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant const wchar_t s[] = L"adefc"; 982aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(!std::regex_match(s, m, std::wregex(L"ab{3,5}c", std::regex_constants::awk))); 983aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.size() == 0); 984aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant } 985aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant { 986aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant std::wcmatch m; 987aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant const wchar_t s[] = L"abbbbbbc"; 988aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(!std::regex_match(s, m, std::wregex(L"ab{3,5}c", std::regex_constants::awk))); 989aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.size() == 0); 990aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant } 991aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant { 992aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant std::wcmatch m; 993aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant const wchar_t s[] = L"adec"; 994aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(!std::regex_match(s, m, std::wregex(L"a.{3,5}c", std::regex_constants::awk))); 995aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.size() == 0); 996aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant } 997aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant { 998aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant std::wcmatch m; 999aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant const wchar_t s[] = L"adefc"; 1000aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(std::regex_match(s, m, std::wregex(L"a.{3,5}c", std::regex_constants::awk))); 1001aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.size() == 1); 1002aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(!m.prefix().matched); 1003aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.prefix().first == s); 1004aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.prefix().second == m[0].first); 1005aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(!m.suffix().matched); 1006aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.suffix().first == m[0].second); 1007aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.suffix().second == m[0].second); 1008aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.length(0) == std::char_traits<wchar_t>::length(s)); 1009aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.position(0) == 0); 1010aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.str(0) == s); 1011aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant } 1012aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant { 1013aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant std::wcmatch m; 1014aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant const wchar_t s[] = L"adefgc"; 1015aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(std::regex_match(s, m, std::wregex(L"a.{3,5}c", std::regex_constants::awk))); 1016aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.size() == 1); 1017aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(!m.prefix().matched); 1018aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.prefix().first == s); 1019aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.prefix().second == m[0].first); 1020aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(!m.suffix().matched); 1021aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.suffix().first == m[0].second); 1022aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.suffix().second == m[0].second); 1023aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.length(0) == std::char_traits<wchar_t>::length(s)); 1024aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.position(0) == 0); 1025aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.str(0) == s); 1026aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant } 1027aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant { 1028aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant std::wcmatch m; 1029aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant const wchar_t s[] = L"adefghc"; 1030aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(std::regex_match(s, m, std::wregex(L"a.{3,5}c", std::regex_constants::awk))); 1031aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.size() == 1); 1032aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(!m.prefix().matched); 1033aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.prefix().first == s); 1034aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.prefix().second == m[0].first); 1035aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(!m.suffix().matched); 1036aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.suffix().first == m[0].second); 1037aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.suffix().second == m[0].second); 1038aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.length(0) == std::char_traits<wchar_t>::length(s)); 1039aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.position(0) == 0); 1040aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.str(0) == s); 1041aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant } 1042aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant { 1043aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant std::wcmatch m; 1044aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant const wchar_t s[] = L"adefghic"; 1045aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(!std::regex_match(s, m, std::wregex(L"a.{3,5}c", std::regex_constants::awk))); 1046aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.size() == 0); 1047aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant } 1048aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant { 1049aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant std::wcmatch m; 1050aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant const wchar_t s[] = L"tournament"; 1051aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(std::regex_match(s, m, std::wregex(L"tour|to|tournament", 1052aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant std::regex_constants::awk))); 1053aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.size() == 1); 1054aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(!m.prefix().matched); 1055aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.prefix().first == s); 1056aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.prefix().second == m[0].first); 1057aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(!m.suffix().matched); 1058aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.suffix().first == m[0].second); 1059aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.suffix().second == m[0].second); 1060aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.length(0) == std::char_traits<wchar_t>::length(s)); 1061aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.position(0) == 0); 1062aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.str(0) == s); 1063aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant } 1064aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant { 1065aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant std::wcmatch m; 1066aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant const wchar_t s[] = L"tournamenttotour"; 1067aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(std::regex_match(s, m, std::wregex(L"(tour|to|tournament)+", 1068aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant std::regex_constants::awk | std::regex_constants::nosubs))); 1069aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.size() == 1); 1070aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(!m.prefix().matched); 1071aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.prefix().first == s); 1072aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.prefix().second == m[0].first); 1073aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(!m.suffix().matched); 1074aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.suffix().first == m[0].second); 1075aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.suffix().second == m[0].second); 1076aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.length(0) == std::char_traits<wchar_t>::length(s)); 1077aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.position(0) == 0); 1078aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.str(0) == s); 1079aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant } 1080aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant { 1081aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant std::wcmatch m; 1082aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant const wchar_t s[] = L"ttotour"; 1083aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(std::regex_match(s, m, std::wregex(L"(tour|to|t)+", 1084aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant std::regex_constants::awk))); 1085aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.size() == 2); 1086aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(!m.prefix().matched); 1087aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.prefix().first == s); 1088aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.prefix().second == m[0].first); 1089aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(!m.suffix().matched); 1090aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.suffix().first == m[0].second); 1091aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.suffix().second == m[0].second); 1092aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.length(0) == std::char_traits<wchar_t>::length(s)); 1093aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.position(0) == 0); 1094aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.str(0) == s); 1095aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.length(1) == 4); 1096aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.position(1) == 3); 1097aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.str(1) == L"tour"); 1098aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant } 1099aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant { 1100aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant std::wcmatch m; 1101aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant const wchar_t s[] = L"-ab,ab-"; 1102aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(!std::regex_match(s, m, std::wregex(L"-(.*),\1-", std::regex_constants::awk))); 1103aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.size() == 0); 1104aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant } 1105aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant { 1106aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant std::wcmatch m; 1107aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant const wchar_t s[] = L"-ab,ab-"; 1108aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(std::regex_match(s, m, std::wregex(L"-.*,.*-", std::regex_constants::awk))); 1109aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.size() == 1); 1110aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(!m.prefix().matched); 1111aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.prefix().first == s); 1112aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.prefix().second == m[0].first); 1113aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(!m.suffix().matched); 1114aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.suffix().first == m[0].second); 1115aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.suffix().second == m[0].second); 1116aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.length(0) == std::char_traits<wchar_t>::length(s)); 1117aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.position(0) == 0); 1118aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.str(0) == s); 1119aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant } 1120aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant { 1121aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant std::wcmatch m; 1122aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant const wchar_t s[] = L"a"; 1123aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(std::regex_match(s, m, std::wregex(L"^[a]$", 1124aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant std::regex_constants::awk))); 1125aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.size() == 1); 1126aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(!m.prefix().matched); 1127aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.prefix().first == s); 1128aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.prefix().second == m[0].first); 1129aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(!m.suffix().matched); 1130aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.suffix().first == m[0].second); 1131aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.suffix().second == m[0].second); 1132aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.length(0) == 1); 1133aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.position(0) == 0); 1134aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.str(0) == L"a"); 1135aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant } 1136aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant { 1137aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant std::wcmatch m; 1138aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant const wchar_t s[] = L"a"; 1139aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(std::regex_match(s, m, std::wregex(L"^[ab]$", 1140aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant std::regex_constants::awk))); 1141aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.size() == 1); 1142aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(!m.prefix().matched); 1143aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.prefix().first == s); 1144aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.prefix().second == m[0].first); 1145aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(!m.suffix().matched); 1146aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.suffix().first == m[0].second); 1147aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.suffix().second == m[0].second); 1148aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.length(0) == 1); 1149aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.position(0) == 0); 1150aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.str(0) == L"a"); 1151aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant } 1152aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant { 1153aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant std::wcmatch m; 1154aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant const wchar_t s[] = L"c"; 1155aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(std::regex_match(s, m, std::wregex(L"^[a-f]$", 1156aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant std::regex_constants::awk))); 1157aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.size() == 1); 1158aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(!m.prefix().matched); 1159aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.prefix().first == s); 1160aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.prefix().second == m[0].first); 1161aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(!m.suffix().matched); 1162aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.suffix().first == m[0].second); 1163aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.suffix().second == m[0].second); 1164aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.length(0) == 1); 1165aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.position(0) == 0); 1166aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.str(0) == s); 1167aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant } 1168aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant { 1169aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant std::wcmatch m; 1170aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant const wchar_t s[] = L"g"; 1171aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(!std::regex_match(s, m, std::wregex(L"^[a-f]$", 1172aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant std::regex_constants::awk))); 1173aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.size() == 0); 1174aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant } 1175aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant { 1176aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant std::wcmatch m; 1177aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant const wchar_t s[] = L"Iraqi"; 1178aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(!std::regex_match(s, m, std::wregex(L"q[^u]", 1179aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant std::regex_constants::awk))); 1180aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.size() == 0); 1181aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant } 1182aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant { 1183aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant std::wcmatch m; 1184aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant const wchar_t s[] = L"Iraq"; 1185aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(!std::regex_match(s, m, std::wregex(L"q[^u]", 1186aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant std::regex_constants::awk))); 1187aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.size() == 0); 1188aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant } 1189aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant { 1190aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant std::wcmatch m; 1191aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant const wchar_t s[] = L"AmB"; 1192aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(std::regex_match(s, m, std::wregex(L"A[[:lower:]]B", 1193aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant std::regex_constants::awk))); 1194aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.size() == 1); 1195aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(!m.prefix().matched); 1196aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.prefix().first == s); 1197aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.prefix().second == m[0].first); 1198aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(!m.suffix().matched); 1199aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.suffix().first == m[0].second); 1200aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.suffix().second == m[0].second); 1201aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.length(0) == std::char_traits<wchar_t>::length(s)); 1202aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.position(0) == 0); 1203aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.str(0) == s); 1204aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant } 1205aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant { 1206aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant std::wcmatch m; 1207aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant const wchar_t s[] = L"AMB"; 1208aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(!std::regex_match(s, m, std::wregex(L"A[[:lower:]]B", 1209aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant std::regex_constants::awk))); 1210aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.size() == 0); 1211aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant } 1212aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant { 1213aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant std::wcmatch m; 1214aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant const wchar_t s[] = L"AMB"; 1215aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(std::regex_match(s, m, std::wregex(L"A[^[:lower:]]B", 1216aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant std::regex_constants::awk))); 1217aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.size() == 1); 1218aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(!m.prefix().matched); 1219aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.prefix().first == s); 1220aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.prefix().second == m[0].first); 1221aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(!m.suffix().matched); 1222aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.suffix().first == m[0].second); 1223aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.suffix().second == m[0].second); 1224aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.length(0) == std::char_traits<wchar_t>::length(s)); 1225aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.position(0) == 0); 1226aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.str(0) == s); 1227aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant } 1228aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant { 1229aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant std::wcmatch m; 1230aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant const wchar_t s[] = L"AmB"; 1231aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(!std::regex_match(s, m, std::wregex(L"A[^[:lower:]]B", 1232aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant std::regex_constants::awk))); 1233aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.size() == 0); 1234aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant } 1235aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant { 1236aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant std::wcmatch m; 1237aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant const wchar_t s[] = L"A5B"; 1238aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(!std::regex_match(s, m, std::wregex(L"A[^[:lower:]0-9]B", 1239aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant std::regex_constants::awk))); 1240aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.size() == 0); 1241aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant } 1242aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant { 1243aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant std::wcmatch m; 1244aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant const wchar_t s[] = L"A?B"; 1245aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(std::regex_match(s, m, std::wregex(L"A[^[:lower:]0-9]B", 1246aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant std::regex_constants::awk))); 1247aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.size() == 1); 1248aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(!m.prefix().matched); 1249aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.prefix().first == s); 1250aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.prefix().second == m[0].first); 1251aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(!m.suffix().matched); 1252aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.suffix().first == m[0].second); 1253aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.suffix().second == m[0].second); 1254aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.length(0) == std::char_traits<wchar_t>::length(s)); 1255aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.position(0) == 0); 1256aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.str(0) == s); 1257aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant } 1258aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant { 1259aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant std::wcmatch m; 1260aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant const wchar_t s[] = L"-"; 1261aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(std::regex_match(s, m, std::wregex(L"[a[.hyphen.]z]", 1262aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant std::regex_constants::awk))); 1263aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.size() == 1); 1264aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(!m.prefix().matched); 1265aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.prefix().first == s); 1266aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.prefix().second == m[0].first); 1267aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(!m.suffix().matched); 1268aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.suffix().first == m[0].second); 1269aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.suffix().second == m[0].second); 1270aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.length(0) == std::char_traits<wchar_t>::length(s)); 1271aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.position(0) == 0); 1272aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.str(0) == s); 1273aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant } 1274aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant { 1275aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant std::wcmatch m; 1276aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant const wchar_t s[] = L"z"; 1277aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(std::regex_match(s, m, std::wregex(L"[a[.hyphen.]z]", 1278aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant std::regex_constants::awk))); 1279aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.size() == 1); 1280aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(!m.prefix().matched); 1281aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.prefix().first == s); 1282aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.prefix().second == m[0].first); 1283aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(!m.suffix().matched); 1284aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.suffix().first == m[0].second); 1285aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.suffix().second == m[0].second); 1286aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.length(0) == std::char_traits<wchar_t>::length(s)); 1287aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.position(0) == 0); 1288aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.str(0) == s); 1289aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant } 1290aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant { 1291aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant std::wcmatch m; 1292aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant const wchar_t s[] = L"m"; 1293aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(!std::regex_match(s, m, std::wregex(L"[a[.hyphen.]z]", 1294aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant std::regex_constants::awk))); 1295aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.size() == 0); 1296aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant } 1297aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant std::locale::global(std::locale("cs_CZ.ISO8859-2")); 1298aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant { 1299aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant std::wcmatch m; 1300aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant const wchar_t s[] = L"m"; 1301aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(std::regex_match(s, m, std::wregex(L"[a[=M=]z]", 1302aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant std::regex_constants::awk))); 1303aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.size() == 1); 1304aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(!m.prefix().matched); 1305aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.prefix().first == s); 1306aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.prefix().second == m[0].first); 1307aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(!m.suffix().matched); 1308aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.suffix().first == m[0].second); 1309aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.suffix().second == m[0].second); 1310aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.length(0) == std::char_traits<wchar_t>::length(s)); 1311aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.position(0) == 0); 1312aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.str(0) == s); 1313aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant } 1314aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant { 1315aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant std::wcmatch m; 1316aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant const wchar_t s[] = L"Ch"; 1317aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(std::regex_match(s, m, std::wregex(L"[a[.ch.]z]", 1318aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant std::regex_constants::awk | std::regex_constants::icase))); 1319aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.size() == 1); 1320aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(!m.prefix().matched); 1321aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.prefix().first == s); 1322aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.prefix().second == m[0].first); 1323aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(!m.suffix().matched); 1324aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.suffix().first == m[0].second); 1325aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.suffix().second == m[0].second); 1326aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.length(0) == std::char_traits<wchar_t>::length(s)); 1327aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.position(0) == 0); 1328aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.str(0) == s); 1329aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant } 1330aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant std::locale::global(std::locale("C")); 1331aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant { 1332aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant std::wcmatch m; 1333aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant const wchar_t s[] = L"m"; 1334aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(!std::regex_match(s, m, std::wregex(L"[a[=M=]z]", 1335aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant std::regex_constants::awk))); 1336aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.size() == 0); 1337aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant } 1338aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant { 1339aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant std::wcmatch m; 1340aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant const wchar_t s[] = L"01a45cef9"; 1341aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(!std::regex_match(s, m, std::wregex(L"[ace1-9]*", 1342aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant std::regex_constants::awk))); 1343aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.size() == 0); 1344aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant } 1345aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant { 1346aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant std::wcmatch m; 1347aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant const wchar_t s[] = L"01a45cef9"; 1348aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(!std::regex_match(s, m, std::wregex(L"[ace1-9]+", 1349aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant std::regex_constants::awk))); 1350aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.size() == 0); 1351aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant } 1352aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant { 1353aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant const wchar_t r[] = L"^[-+]?[0-9]+[CF]$"; 1354aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant std::ptrdiff_t sr = std::char_traits<wchar_t>::length(r); 1355aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant typedef forward_iterator<const wchar_t*> FI; 1356aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant typedef bidirectional_iterator<const wchar_t*> BI; 1357aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant std::wregex regex(FI(r), FI(r+sr), std::regex_constants::awk); 1358aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant std::match_results<BI> m; 1359aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant const wchar_t s[] = L"-40C"; 1360aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant std::ptrdiff_t ss = std::char_traits<wchar_t>::length(s); 1361aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(std::regex_match(BI(s), BI(s+ss), m, regex)); 1362aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.size() == 1); 1363aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(!m.prefix().matched); 1364aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.prefix().first == BI(s)); 1365aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.prefix().second == m[0].first); 1366aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(!m.suffix().matched); 1367aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.suffix().first == m[0].second); 1368aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.suffix().second == m[0].second); 1369aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.length(0) == 4); 1370aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.position(0) == 0); 1371aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.str(0) == s); 1372aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant } 1373aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant { 1374aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant std::wcmatch m; 1375aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant const wchar_t s[] = L"\n\n\n"; 1376aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(std::regex_match(s, m, std::wregex(L"[\\n]+", 1377aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant std::regex_constants::awk))); 1378aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.size() == 1); 1379aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(!m.prefix().matched); 1380aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.prefix().first == s); 1381aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.prefix().second == m[0].first); 1382aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(!m.suffix().matched); 1383aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.suffix().first == m[0].second); 1384aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.suffix().second == s + std::char_traits<wchar_t>::length(s)); 1385aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.length(0) == std::char_traits<wchar_t>::length(s)); 1386aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.position(0) == 0); 1387aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant assert(m.str(0) == s); 1388aa78f9cdb3c8a049660deb39c9296501d2467d78Howard Hinnant } 13898b00e6c96091c828b40ac410b6f123c7429a653dHoward Hinnant*/} 1390