首先,我想为我的英语道歉。
我在一个小型 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::regex::extended 更改为 std::regex::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 还没有完成,但我认为它们应该以如此简单的正则表达式工作。
无论如何,如果有人能指出我一个小的正则表达式库(请不要提升),我将不胜感激。
附加信息
我正在使用 Linux Ubuntu 12.10,编译器是 gcc > 4.7
编辑:
@jalf:它可以编译,但在最后一个中给了我错误的结果。它给出了一个错误。无法显示任何结果,因为我今天在客户中,并且无法访问该程序。
@KennyTM:是的,又是 gcc/libstdc++,我一直在阅读这个论坛来寻找答案。同样,我不能使用提升。
@Pete Becker:是的,它是 gcc > 4.7 版本。不记得确切的版本了。