<alert comment="boost and regex newbie"> I'm using regex_search to detect which subexpression matched. I adapted the "Captures" example at: http://www.boost.org/libs/regex/doc/captures.html In the snippet below, it works ok to loop thru m[num].matched, but I was wondering if there was a more direct way of getting the information about which match was "hit". (The real application is going to have about 70 possible subexpressions to match against, instead of just four.) std::string contents("String has two, three, one, and four in it. "); boost::regex reg("(one)|(two)|(three)|(four)");
From the above, I want the output to be:
two three one four
void test_search()
{
boost::smatch m;
std::string contents("String has two, three, one, and four in it. ");
boost::regex reg("(one)|(two)|(three)|(four)");
std::string::const_iterator it = contents.begin();
std::string::const_iterator end = contents.end();
while (boost::regex_search(it, end, m, reg)) {
for (int num = 1; num <= 4; ++num) {
if (m[num].matched == true) {
std::cout << "