我有以下简单示例:其中<regex>
库用于在“hello world”中搜索“llo”。
#include <regex>
#include <iostream>
#include <string>
using namespace std;
int main(void)
{
cout << boolalpha;
regex rgx("llo");
cmatch result;
cout << regex_search("hello world", result, rgx) << endl;
cout << "Matched: " << result.str() << endl;
return 0;
}
我用“gcc version 4.7.1”使用以下命令编译它:
c++ regex2.cpp -o regex2 -std=c++11
结果是:
false
Matched:
那么,我认为我做错了什么?由于它编译,我可以假设c++11
能够在我的计算机上,因此库也可以吗?
真诚的感谢!
答案 0 :(得分:3)
不,std::regex
不在GCC 4.7.1附带的标准库实现中完全实现。
<regex>
的全面支持将于今年晚些时候发布 GCC 4.9 。
请参阅:http://gcc.gnu.org/gcc-4.9/changes.html
与此同时,我建议<boost/regex.hpp>
使用类似的语法。
#include <boost/regex.hpp>
#include <iostream>
#include <string>
int main() {
std::cout << std::boolalpha;
boost::regex rgx("llo");
boost::cmatch result;
std::cout << boost::regex_search("hello world", result, rgx) << std::endl;
std::cout << "Matched: " << result.str() << std::endl;
}