Странные результаты при использовании регулярного выражения C++ 11 с gcc 4.8.2 (но работает с регулярным выражением Boost) [дубликат]

StackOverflow https://stackoverflow.com//questions/20027305

Вопрос

Я пытался использовать регулярное выражение C++11, но это не удалось даже в тривиальных примерах.Со стороны кажется, что сравниваются только строки, например:

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

Напротив, библиотека регулярных выражений Boost ведет себя так, как я и ожидал:

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

Я тестировал GCC 4.8.2 и clang 3.4 (также используя библиотеку STL GCC).Либо библиотека сломана, либо я не понимаю синтаксис, определенный стандартом C++11.

Это было полезно?

Решение

Он не поддерживается в GCC 4.8.x.Ознакомьтесь с соответствующей записью Bugzilla:

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

Конкретно:«Теперь регулярное выражение реализовано.Должен идти с GCC 4.9 :)"

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top