<regex>库是否正常工作?</regex>

时间:2014-02-28 14:36:13

标签: c++ regex c++11

我有以下简单示例:其中<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能够在我的计算机上,因此库也可以吗?

真诚的感谢!

1 个答案:

答案 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;
}