如何获得比赛数组

时间:2013-08-02 07:08:26

标签: c++ boost-regex

我正试图在here中的boost :: regex_serach示例中执行某些操作。

我的代码示例是:

boost::regex expression("<name=\"[a-zA-z0-9]+\" "
                 "init=\"[0-9]+\"/>");
std::string::const_iterator start, end;
start = Field.begin();
end = Field.end();
boost::smatch what;
boost::match_flag_type flags = boost::match_default;
while(regex_search(start, end, what, expression,flags)){
    std::cout<<"@@@" << std::string(what[0].first,what[0].second);
    start = what[0].second;
    // update flags:
    flags |= boost::match_prev_avail;
    flags |= boost::match_not_bob;
}

我有一些xml文件..... name="SamleName" init="6"/...并且想要what[1]中的SamlpeName和what[2]中的初始值,但此处列出的代码只会将此字段" name="SamleName" init="6"/"写入{{ 1}}。

如何在regex_search示例中拆分它?

2 个答案:

答案 0 :(得分:2)

从纯正regex的角度来看(我没有使用过boost regex库)你需要用圆括号()对所需的匹配进行分组。有关详细信息,请参阅http://www.regular-expressions.info/brackets.html

所以你的正则表达式应该是这样的

boost::regex expression("<name=(\"[a-zA-z0-9]+\") init=(\"[0-9]+\")/>");

您可以像这样显示匹配

<name=(\"[a-zA-z0-9]+\") init=(\"[0-9]+\")/>

Regular expression visualization

Edit live on Debuggex

答案 1 :(得分:0)

如何使用 boost :: sregex_iterator