Chinaunix

标题: C++正则解析器受哪些环境变量影响? [打印本页]

作者: remark    时间: 2014-12-26 18:43
标题: C++正则解析器受哪些环境变量影响?
vvvvvv.cplusplus.com/reference/regex/regex_match
链接里的例子程序 直接copy到本地编译运行 显示如下结果,和链接里的结果完全不一样 这是什么原因
string literal with 0 matches
string object with 0 matches

环境是SUSE Linux gcc version 4.3.4

作者: remark    时间: 2014-12-26 18:45
居然不许发url,自己把首个单词替换成3w吧
作者: remark    时间: 2014-12-26 19:11
#include <iostream>
#include <boost/xpressive/xpressive.hpp>

using namespace std;
using namespace boost:pressive;

int main(int argc, char* argv[])
{
    string str = "a+b+c+df";
    cregex reg = cregex::compile("\\w+", icase);
    //cregex reg = +_w;
    assert(regex_search(str.c_str(), reg));

    cmatch what;
    regex_match(str.c_str(), what, reg);
    cout << what.size() << endl;
    return 0;
}
从一本书上抄来一段,运行居然也什么也匹配不到
作者: fender0107401    时间: 2014-12-27 10:00
这个不受环境变量影响吧。
作者: remark    时间: 2014-12-27 14:57
回复 4# fender0107401


    应该是,但我实在想不出别的原因了
作者: myworkstation    时间: 2014-12-29 20:09
回复 1# remark


   你怎么编译过去的。gcc 4.9才支持c++11的<regex>。
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=53631
作者: remark    时间: 2014-12-30 11:34
本帖最后由 remark 于 2014-12-30 11:36 编辑

回复 6# myworkstation

编译时根据提示加了个 -std=c++0x 就编过去了

问题已解决,match是整体匹配 search是部分匹配

   
作者: zsszss0000    时间: 2014-12-30 12:01
regrex特性是否就是可以使用C++进行正则匹配呢?回复 6# myworkstation


   
作者: myworkstation    时间: 2015-01-06 10:34
回复 8# zsszss0000


    是的,不过如果没有c++11的支持,也可以看看是否支持tr1,tr1也有regex




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2