gcc 4.8.2에서 C++11 정규 표현식을 사용할 때 이상한 결과가 발생합니다(그러나 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(또한 GCC의 STL 라이브러리 사용)로 테스트했습니다.라이브러리가 손상되었거나 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