164befb5bc5b5aaec6717c931396990eb58ecd626Marshall Clow// -*- C++ -*- 264befb5bc5b5aaec6717c931396990eb58ecd626Marshall Clow//===----------------------------------------------------------------------===// 364befb5bc5b5aaec6717c931396990eb58ecd626Marshall Clow// 464befb5bc5b5aaec6717c931396990eb58ecd626Marshall Clow// The LLVM Compiler Infrastructure 564befb5bc5b5aaec6717c931396990eb58ecd626Marshall Clow// 664befb5bc5b5aaec6717c931396990eb58ecd626Marshall Clow// This file is dual licensed under the MIT and the University of Illinois Open 764befb5bc5b5aaec6717c931396990eb58ecd626Marshall Clow// Source Licenses. See LICENSE.TXT for details. 864befb5bc5b5aaec6717c931396990eb58ecd626Marshall Clow// 964befb5bc5b5aaec6717c931396990eb58ecd626Marshall Clow//===----------------------------------------------------------------------===// 1064befb5bc5b5aaec6717c931396990eb58ecd626Marshall Clow 1164befb5bc5b5aaec6717c931396990eb58ecd626Marshall Clow// <regex> 1264befb5bc5b5aaec6717c931396990eb58ecd626Marshall Clow 1364befb5bc5b5aaec6717c931396990eb58ecd626Marshall Clow// match_not_eol: 1484acb1ec3f7d5e0f37d7176697c2fa876c413407Eric Fiselier// The last character in the sequence [first,last) shall be treated as 1584acb1ec3f7d5e0f37d7176697c2fa876c413407Eric Fiselier// though it is not at the end of a line, so the character "$" in 1664befb5bc5b5aaec6717c931396990eb58ecd626Marshall Clow// the regular expression shall not match [last,last). 1764befb5bc5b5aaec6717c931396990eb58ecd626Marshall Clow 1864befb5bc5b5aaec6717c931396990eb58ecd626Marshall Clow#include <regex> 1964befb5bc5b5aaec6717c931396990eb58ecd626Marshall Clow#include <cassert> 206dfff1c9b9147641601574c953e208ece17f27d8Marshall Clow#include "test_macros.h" 2164befb5bc5b5aaec6717c931396990eb58ecd626Marshall Clow 2264befb5bc5b5aaec6717c931396990eb58ecd626Marshall Clowint main() 2364befb5bc5b5aaec6717c931396990eb58ecd626Marshall Clow{ 2464befb5bc5b5aaec6717c931396990eb58ecd626Marshall Clow { 2564befb5bc5b5aaec6717c931396990eb58ecd626Marshall Clow std::string target = "foo"; 2664befb5bc5b5aaec6717c931396990eb58ecd626Marshall Clow std::regex re("foo$"); 2764befb5bc5b5aaec6717c931396990eb58ecd626Marshall Clow assert( std::regex_match(target, re)); 2864befb5bc5b5aaec6717c931396990eb58ecd626Marshall Clow assert(!std::regex_match(target, re, std::regex_constants::match_not_eol)); 2964befb5bc5b5aaec6717c931396990eb58ecd626Marshall Clow } 3064befb5bc5b5aaec6717c931396990eb58ecd626Marshall Clow 3164befb5bc5b5aaec6717c931396990eb58ecd626Marshall Clow { 3264befb5bc5b5aaec6717c931396990eb58ecd626Marshall Clow std::string target = "foo"; 3364befb5bc5b5aaec6717c931396990eb58ecd626Marshall Clow std::regex re("foo"); 3464befb5bc5b5aaec6717c931396990eb58ecd626Marshall Clow assert( std::regex_match(target, re)); 3564befb5bc5b5aaec6717c931396990eb58ecd626Marshall Clow assert( std::regex_match(target, re, std::regex_constants::match_not_eol)); 3664befb5bc5b5aaec6717c931396990eb58ecd626Marshall Clow } 3764befb5bc5b5aaec6717c931396990eb58ecd626Marshall Clow 3864befb5bc5b5aaec6717c931396990eb58ecd626Marshall Clow { 3964befb5bc5b5aaec6717c931396990eb58ecd626Marshall Clow std::string target = "refoo"; 4064befb5bc5b5aaec6717c931396990eb58ecd626Marshall Clow std::regex re("foo$"); 4164befb5bc5b5aaec6717c931396990eb58ecd626Marshall Clow assert( std::regex_search(target, re)); 4264befb5bc5b5aaec6717c931396990eb58ecd626Marshall Clow assert(!std::regex_search(target, re, std::regex_constants::match_not_eol)); 4364befb5bc5b5aaec6717c931396990eb58ecd626Marshall Clow } 4464befb5bc5b5aaec6717c931396990eb58ecd626Marshall Clow 4564befb5bc5b5aaec6717c931396990eb58ecd626Marshall Clow { 4664befb5bc5b5aaec6717c931396990eb58ecd626Marshall Clow std::string target = "refoo"; 4764befb5bc5b5aaec6717c931396990eb58ecd626Marshall Clow std::regex re("foo"); 4864befb5bc5b5aaec6717c931396990eb58ecd626Marshall Clow assert( std::regex_search(target, re)); 4964befb5bc5b5aaec6717c931396990eb58ecd626Marshall Clow assert( std::regex_search(target, re, std::regex_constants::match_not_eol)); 5064befb5bc5b5aaec6717c931396990eb58ecd626Marshall Clow } 5164befb5bc5b5aaec6717c931396990eb58ecd626Marshall Clow} 52