#include<iostream>
#include<regex>
using namespace std;
int main() {
string s = "foo:12,bar:456,b:az:0,";
regex c("([^,]+?):([0-9]+)");
int matches = 0;
smatch sm;
sregex_iterator iter(s.begin(), s.end(), c); std::sregex_iterator end;
while(iter != end) {
sm = *iter;
cout << "grp1 - " << sm[1].str() << ", grp2 - " << sm[2].str() << endl;
matches++;
++iter;
}
cout << "Matches: " << matches << endl;
}
I2luY2x1ZGU8aW9zdHJlYW0+CiNpbmNsdWRlPHJlZ2V4Pgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKaW50IG1haW4oKSB7CiAgICBzdHJpbmcgcyA9ICJmb286MTIsYmFyOjQ1NixiOmF6OjAsIjsKICAgIHJlZ2V4IGMoIihbXixdKz8pOihbMC05XSspIik7CiAgICBpbnQgbWF0Y2hlcyA9IDA7CiAgICBzbWF0Y2ggc207CiAgICBzcmVnZXhfaXRlcmF0b3IgaXRlcihzLmJlZ2luKCksIHMuZW5kKCksIGMpOyBzdGQ6OnNyZWdleF9pdGVyYXRvciBlbmQ7ICAgCiAgICB3aGlsZShpdGVyICE9IGVuZCkgeyAKICAgIAlzbSA9ICppdGVyOwogICAgICAgIGNvdXQgPDwgImdycDEgLSAiIDw8IHNtWzFdLnN0cigpIDw8ICIsICAgZ3JwMiAtICIgPDwgc21bMl0uc3RyKCkgPDwgZW5kbDsgCiAgICAgICAgbWF0Y2hlcysrOwogICAgICAgICsraXRlcjsgCiAgICB9CiAgICBjb3V0IDw8ICJNYXRjaGVzOiAiIDw8IG1hdGNoZXMgPDwgZW5kbDsgCn0=