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