2012-06-21 97 views
4
std::cmatch res; 
std::string str = "<h2>I'm a piece of text</h2>"; 
std::regex rx("<h(.)>([^<]+)"); 
std::regex_search(str.c_str(), res, rx); 
std::cout << res[1] << ". " << res[2] << "\n"; 

這段簡單的代碼應該工作嗎?對? 顯然,這不:regex_search throwing std :: regex_error

terminate called after throwing an instance of 'std::regex_error' 
    what(): regex_error 
Aborted 

編譯器(GCC 4.7.0)的bug還是我失去了一些東西?

回答

3

正則表達式中的括號似乎導致問題。有關更多詳細信息和可能的解決方法,請參閱this SO thread

而且(在同一個線程),GCC 4.6.1有供std::regex僅部分支持,我不知道這是否已被固定在4.7.0版本還

+2

它一直未動AFAICT: http://gcc.gnu.org/onlinedocs/libstdc++/manual/status.html#status.iso.2011 – rubenvb

相關問題