#include <string>
#include <iostream>
#include <regex>
using namespace std;
int main( ) {
std:: regex r( "(a)|(b)|(c)" ) ;
std:: string s = "abcab" ;
std:: vector < std:: string > astrings;
std:: vector < std:: string > bstrings;
std:: vector < std:: string > cstrings;
for ( std:: sregex_iterator i = std:: sregex_iterator ( s.begin ( ) , s.end ( ) , r) ;
i ! = std:: sregex_iterator ( ) ;
++ i)
{
std:: smatch m = * i;
if ( m[ 1 ] .matched ) {
astrings.push_back ( m[ 1 ] .str ( ) ) ;
std:: cout << "1:" << " Added m[1]: " << m[ 1 ] .str ( ) << " at Position " << m.position ( 1 ) << '\n ' ;
}
else if ( m[ 2 ] .matched ) {
bstrings.push_back ( m[ 2 ] .str ( ) ) ;
std:: cout << "2:" << " Added m[2]: " << m[ 2 ] .str ( ) << " at Position " << m.position ( 2 ) << '\n ' ;
}
else if ( m[ 3 ] .matched ) {
cstrings.push_back ( m[ 3 ] .str ( ) ) ;
std:: cout << "3:" << " Added m[3]: " << m[ 3 ] .str ( ) << " at Position " << m.position ( 3 ) << '\n ' ;
}
}
// Printing vectors
for ( auto i: astrings)
std:: cout << i << ' ' ;
std:: cout << "\n " ;
for ( auto i: bstrings)
std:: cout << i << ' ' ;
std:: cout << "\n " ;
for ( auto i: cstrings)
std:: cout << i << ' ' ;
return 0 ;
}
I2luY2x1ZGUgPHN0cmluZz4KI2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8cmVnZXg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgppbnQgbWFpbigpIHsKCXN0ZDo6cmVnZXggcigiKGEpfChiKXwoYykiKTsKCXN0ZDo6c3RyaW5nIHMgPSAiYWJjYWIiOwoJc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+IGFzdHJpbmdzOwoJc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+IGJzdHJpbmdzOwoJc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+IGNzdHJpbmdzOwoJCglmb3Ioc3RkOjpzcmVnZXhfaXRlcmF0b3IgaSA9IHN0ZDo6c3JlZ2V4X2l0ZXJhdG9yKHMuYmVnaW4oKSwgcy5lbmQoKSwgcik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSAhPSBzdGQ6OnNyZWdleF9pdGVyYXRvcigpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICsraSkKICAgIHsKICAgICAgICBzdGQ6OnNtYXRjaCBtID0gKmk7CiAgICAgICAgaWYgKG1bMV0ubWF0Y2hlZCkgewogICAgICAgIAlhc3RyaW5ncy5wdXNoX2JhY2sobVsxXS5zdHIoKSk7CiAgICAgICAgCXN0ZDo6Y291dCA8PCAiMToiIDw8ICIgICAgQWRkZWQgbVsxXTogIiA8PCBtWzFdLnN0cigpIDw8ICIgYXQgUG9zaXRpb24gIiA8PCBtLnBvc2l0aW9uKDEpIDw8ICdcbic7CiAgICAgICAgfQogICAgICAgIGVsc2UgaWYgKG1bMl0ubWF0Y2hlZCkgewogICAgICAgIAlic3RyaW5ncy5wdXNoX2JhY2sobVsyXS5zdHIoKSk7CiAgICAgICAgCXN0ZDo6Y291dCA8PCAiMjoiIDw8ICIgICAgQWRkZWQgbVsyXTogIiA8PCBtWzJdLnN0cigpIDw8ICIgYXQgUG9zaXRpb24gIiA8PCBtLnBvc2l0aW9uKDIpIDw8ICdcbic7CiAgICAgICAgfQogICAgICAgIGVsc2UgaWYgKG1bM10ubWF0Y2hlZCkgewogICAgICAgIAljc3RyaW5ncy5wdXNoX2JhY2sobVszXS5zdHIoKSk7CiAgICAgICAgCXN0ZDo6Y291dCA8PCAiMzoiIDw8ICIgICAgQWRkZWQgbVszXTogIiA8PCBtWzNdLnN0cigpIDw8ICIgYXQgUG9zaXRpb24gIiA8PCBtLnBvc2l0aW9uKDMpIDw8ICdcbic7CiAgICAgICAgfQoJfQoJLy8gUHJpbnRpbmcgdmVjdG9ycwogICAgZm9yIChhdXRvIGk6IGFzdHJpbmdzKQogIAkJc3RkOjpjb3V0IDw8IGkgPDwgJyAnOwogIAlzdGQ6OmNvdXQgPDwgIlxuIjsKICAJZm9yIChhdXRvIGk6IGJzdHJpbmdzKQogIAkJc3RkOjpjb3V0IDw8IGkgPDwgJyAnOwogICAgc3RkOjpjb3V0IDw8ICJcbiI7CiAgCWZvciAoYXV0byBpOiBjc3RyaW5ncykKICAJCXN0ZDo6Y291dCA8PCBpIDw8ICcgJzsKCglyZXR1cm4gMDsKfQo=