1// -*- C++ -*-
2//===----------------------------------------------------------------------===//
3//
4//                     The LLVM Compiler Infrastructure
5//
6// This file is dual licensed under the MIT and the University of Illinois Open
7// Source Licenses. See LICENSE.TXT for details.
8//
9//===----------------------------------------------------------------------===//
10
11// <regex>
12
13// match_not_bol:
14//     The first character in the sequence [first,last) shall be treated as
15//     though it is not at the beginning of a line, so the character ^ in the
16//     regular expression shall not match [first,first).
17
18#include <regex>
19#include <cassert>
20
21int main()
22{
23    {
24    std::string target = "foo";
25    std::regex re("^foo");
26    assert( std::regex_match(target, re));
27    assert(!std::regex_match(target, re, std::regex_constants::match_not_bol));
28    }
29
30    {
31    std::string target = "foo";
32    std::regex re("foo");
33    assert( std::regex_match(target, re));
34    assert( std::regex_match(target, re, std::regex_constants::match_not_bol));
35    }
36
37    {
38    std::string target = "fooby";
39    std::regex re("^foo");
40    assert( std::regex_search(target, re));
41    assert(!std::regex_search(target, re, std::regex_constants::match_not_bol));
42    }
43
44    {
45    std::string target = "fooby";
46    std::regex re("foo");
47    assert( std::regex_search(target, re));
48    assert( std::regex_search(target, re, std::regex_constants::match_not_bol));
49    }
50}
51