gcc 4.8.2에서 C++11 정규 표현식을 사용할 때 이상한 결과가 발생합니다(그러나 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(또한 GCC의 STL 라이브러리 사용)로 테스트했습니다.라이브러리가 손상되었거나 C++11 표준에 정의된 구문을 이해할 수 없습니다.
해결책
GCC 4.8.x에서는 지원되지 않습니다.해당 Bugzilla 항목을 확인하세요.
구체적으로:"이제 정규식이 구현되었습니다.GCC 4.9와 함께 제공되어야 합니다 :)"
제휴하지 않습니다 StackOverflow