2013-12-11 3 views
3

this reference에 따르면, 나는 그러나일치 한 자리 :: regex_match

std::regex e1 ("\\d"); 

, 나는 다음과 같은 테스트 코드를 실행할 때 내가 정규식 예외가 함께 한 자리와 일치 할 수 있어야한다.

#include <iostream> 
#include <string> 
#include <regex> 

int main() 
{ 
    std::regex r("\\d"); 
    std::string s("9"); 
    if (std::regex_match(s, r)) { std::cout << "matched!" << std::endl; } 
} 
+0

위안이라면 VC++ 2013로 제 상자에서 훌륭하게 작동합니다. 'std :: exception'을 포착하고'what()'메서드를 사용하여 더 많은 정보를 얻을 수 있어야합니다. – Trillian

+0

재생할 수 없습니다. 플랫폼, 컴파일러? (오, 아마도 당신은''네임 스페이스 표준을 악용하여 처벌 당할 것입니다 ... ') –

+0

네임 스페이스를 수정 한 다음 업데이트 할 것입니다. 나는 gcc로 데비안을 돌리고있다. 다음과 같이 컴파일 : g ++ -std = C++ 11 test.cpp – onezeno

답변

0

@ qwrrty가 제시하는대로 std :: regex 지원이 여전히 버그 인 경우 문자 클래스 '[0-9]''\d'을 대신합니다.

+1

몇 가지 매우 간단한 C++ 코드를 작성하여 다른 GCC 관련 std :: regex 문항 며칠 전에. 그것은 [0-9]와 같은 아주 간단한 정규식에서도 예외를 던졌습니다. 나는 어떤 정규식 작업을 위해서라도 GCC 4.7을 사용하려고 시도하는 것을 권장하지 않는다. –

관련 문제