//===----------------------------------------------------------------------===// // // The LLVM Compiler Infrastructure // // This file is dual licensed under the MIT and the University of Illinois Open // Source Licenses. See LICENSE.TXT for details. // //===----------------------------------------------------------------------===// // <regex> // match_not_null: // The regular expression shall not match an empty sequence. #include "test_macros.h" #include <cassert> #include <regex> int main() { // When match_not_null is on, the regex engine should reject empty matches and // move on to try other solutions. std::cmatch m; assert(!std::regex_search("a", m, std::regex("b*"), std::regex_constants::match_not_null)); assert(std::regex_search("aa", m, std::regex("a*?"), std::regex_constants::match_not_null)); assert(m[0].length() == 1); assert(!std::regex_search("a", m, std::regex("b*", std::regex::extended), std::regex_constants::match_not_null)); assert(!std::regex_search( "a", m, std::regex("b*", std::regex::extended | std::regex_constants::nosubs), std::regex_constants::match_not_null)); assert(!std::regex_match("", m, std::regex("a*"), std::regex_constants::match_not_null)); assert(!std::regex_match("", m, std::regex("a*", std::regex::extended), std::regex_constants::match_not_null)); assert(!std::regex_match( "", m, std::regex("a*", std::regex::extended | std::regex_constants::nosubs), std::regex_constants::match_not_null)); return 0; }