我想在open和close括号之间提取字符串。如果内容是
145(5)(7)
输出必须
5
7
我使用下面的代码
尝试使用C ++ STL TR1const std::tr1::regex pattern("\\((.*?)\\)");
// the source text
std::string text= "145(5)(7)";
const std::tr1::sregex_token_iterator end;
for (std::tr1::sregex_token_iterator i(text.begin(),
text.end(), pattern);
i != end;
++i)
{
std::cout << *i << std::endl;
}
我得到输出为
(5)
(7)
我希望输出没有分隔符。
请使用STL TR1帮助我满足我的要求。
答案 0 :(得分:0)
您需要使用sregex_iterator
代替sregex_token_iterator
,然后通过.str(n)
访问子匹配:
const std::tr1::regex pattern1("\\((.*?)\\)");
std::string text= "145(5)(7)";
const std::tr1::sregex_iterator end;
for (std::tr1::sregex_iterator i(text.begin(),
text.end(), pattern1);
i != end;
++i)
{
std::cout << (*i).str(1) << std::endl;
}