没有匹配的C + + 11正则expression式

为什么在g ++(Debian 4.6.3-1)4.6.3或clang version 3.2(trunk 159457)中找不到匹配项

#include <iostream> #include <string> #include <regex> using namespace std; int main() { string line("test"); regex pattern("test",regex_constants::grep); smatch result; bool ret(false); ret = regex_search(line,result,pattern); cout << boolalpha << ret << endl; cout << result.size() << endl; return 0 ; } 

产量

 false 0 

因为<regex>尚未在libstdc ++中实现,所以在这里 (§28)中有logging。

现在,请改用Boost.Xpressive或Boost.Regex 。

现在你的例子正确运行:

 $ ~/src/gcc/inst/bin/g++ --version g++ (GCC) 4.9.0 20140224 (experimental) 

 $ uname -a Linux ... x86_64 x86_64 x86_64 GNU/Linux 

执行

 $ ./83-regex.x true 1 

根据这个改变,在gcc-4.9和libstd ++ – v3中支持log <regex>

http://gcc.gnu.org/gcc-4.9/changes.html