#include <string>
#include <iostream>
#include <regex>
using namespace std;
int main( ) {
std:: regex r( R"((\b [[:alpha:]]+\b )|(\b \d+\b ))" ) ;
std:: string s = "foo bar 123" ;
for ( std:: sregex_iterator i = std:: sregex_iterator ( s.begin ( ) , s.end ( ) , r) ;
i ! = std:: sregex_iterator ( ) ;
++ i)
{
std:: smatch m = * i;
std:: cout << "Match value: " << m.str ( ) << " at Position " << m.position ( ) << '\n ' ;
for ( auto index = 1 ; index < m.size ( ) ; ++ index ) {
if ( m[ index] .matched ) {
std:: cout << "Capture group ID: " << index- 1 << std:: endl ;
break ;
}
}
}
return 0 ;
}
I2luY2x1ZGUgPHN0cmluZz4KI2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8cmVnZXg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgppbnQgbWFpbigpIHsKCXN0ZDo6cmVnZXggcihSIigoXGJbWzphbHBoYTpdXStcYil8KFxiXGQrXGIpKSIpOwoJc3RkOjpzdHJpbmcgcyA9ICJmb28gYmFyIDEyMyI7Cglmb3Ioc3RkOjpzcmVnZXhfaXRlcmF0b3IgaSA9IHN0ZDo6c3JlZ2V4X2l0ZXJhdG9yKHMuYmVnaW4oKSwgcy5lbmQoKSwgcik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSAhPSBzdGQ6OnNyZWdleF9pdGVyYXRvcigpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICsraSkKICAgIHsKICAgICAgICBzdGQ6OnNtYXRjaCBtID0gKmk7CiAgICAgICAgc3RkOjpjb3V0IDw8ICJNYXRjaCB2YWx1ZTogIiA8PCBtLnN0cigpIDw8ICIgYXQgUG9zaXRpb24gIiA8PCBtLnBvc2l0aW9uKCkgPDwgJ1xuJzsKICAgICAgICAKICAgICAgICBmb3IoYXV0byBpbmRleCA9IDE7IGluZGV4IDwgbS5zaXplKCk7ICsraW5kZXggKXsKICAgICAgICAJaWYgKG1baW5kZXhdLm1hdGNoZWQpIHsKCQkJCXN0ZDo6Y291dCA8PCAiQ2FwdHVyZSBncm91cCBJRDogIiA8PCBpbmRleC0xIDw8IHN0ZDo6ZW5kbDsKCQkJCWJyZWFrOwogICAgICAgIAl9CgkJfQogICAgfQoJcmV0dXJuIDA7Cn0K