Странные результаты при использовании регулярного выражения C++11 с gcc 4.8.2 (но работает с регулярным выражением Boost)
Я пытался использовать регулярное выражение 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.
1 ответ
Решение
Это не поддерживается в GCC 4.8.x. Проверьте соответствующую запись Bugzilla:
В частности: "Теперь регулярное выражение реализовано. Должно прийти с GCC 4.9:)"