我正试图在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示例中拆分它?
答案 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]+\")/>
答案 1 :(得分:0)
如何使用 boost :: sregex_iterator ?