Question

I tried to use C++11's regular expression but failed even in trivial examples. From the outside, it seems to only compare the strings, for example:

std::regex_match(std::string{""}, std::regex{"a?"})   // false (???)
std::regex_match(std::string{"a?"}, std::regex{"a?"}) // true  (???)

In contrast, the Boost's regexp library behaves as I would have expected:

boost::regex_match(std::string{""}, boost::regex{"a?"})   // true  (OK)
boost::regex_match(std::string{"a?"}, boost::regex{"a?"}) // false (OK)

I tested with GCC 4.8.2 and clang 3.4 (also using GCC's STL library). Either the library is broken, or I do not understand the syntax defined by the C++11 standard.

Was it helpful?

Solution

It's not supported in GCC 4.8.x. Check out the corresponding Bugzilla entry:

http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53631

Specifically: "Now regex is implemented. Should come with GCC 4.9 :)"

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top