首先我想爲我的英語道歉。C++ 2011 std :: regex根本不起作用
我正在一個小型的C++項目中工作,我想保持它很小。 主要問題是我需要使用正則表達式,但他們不按我需要的方式工作。
這工作得很好:
std::string s ("subject");
std::regex e ("(sub)(.*)");
if (std::regex_match (s,e))
std::cout << "string object matched\n";
這一個工作太細:
std::string s ("0");
std::regex e ("[0-9]", std::regex::extended);
if (std::regex_match (s,e))
std::cout << "string object matched\n";
即使我改變的std ::正則表達式::延長的std ::正則表達式:: AWK,基本或不管這段代碼不起作用:
std::string s ("00");
std::regex e ("[0-9]{2}", std::regex::extended);
if (std::regex_match (s,e))
std::cout << "string object matched\n";
我做錯了什麼?
我知道std :: regex沒有完成,但我認爲他們應該在這樣一個簡單的正則表達式中工作。
無論如何,如果任何人都可以指向我一個小正則表達式庫(不提高請)我會很感激。
aditional的信息
我工作的Linux操作系統Ubuntu 12.10,編譯器是gcc> 4.7
編輯:
@jalf:它編譯,但它給了我一個錯誤的結果在最後一個。 它給出了一個錯誤。 無法顯示任何結果因爲我今天在客戶端,我無法訪問該程序。
@KennyTM:是的,它再次是gcc/libstdC++,我一直在閱讀這個論壇尋找答案。再次,我不能使用提升。
@Pete Becker:是的,它是gcc> 4.7版本。不記得確切的版本。
你使用哪個版本的哪個實現?這些都是非常新的功能,我相信這些實現具有不同的特性。 – PlasmaHH
你是什麼意思它「不起作用」?它是否編譯?它會給出錯誤的結果嗎?你期望得到哪個結果,以及你實際得到了哪些結果? – jalf
它又是gcc/libstdC++嗎?關於它已經有很多問題了。簡短的回答:使用Boost,或者切換到clang/libC++,或者不要使用它。 – kennytm