// Example program
#include <iostream>
#include <string>
#include <sstream>
#include <regex>
using namespace std;
int main()
{
string myString1 = "+50years";
string myString2 = "+50years-4months+3weeks+5minutes";
regex rg("([\\+-][0-9]+[A-Za-z]+)", regex::extended);
smatch sm;
while (regex_search(myString2, sm, rg)) {
cout <<sm[0]<<endl;
myString2 = sm.suffix().str();
stringstream ss (sm[0]);
char mathOperator;
int value;
string timeUnit;
ss >> mathOperator >> value >> timeUnit;
cout << "mathOperator: " << mathOperator << endl;
cout << "value: " << value << endl;
cout << "timeUnit: " << timeUnit << endl;
}
}
Ly8gRXhhbXBsZSBwcm9ncmFtCiNpbmNsdWRlIDxpb3N0cmVhbT4KI2luY2x1ZGUgPHN0cmluZz4KI2luY2x1ZGUgPHNzdHJlYW0+CiNpbmNsdWRlIDxyZWdleD4KCnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgppbnQgbWFpbigpCnsKICBzdHJpbmcgbXlTdHJpbmcxID0gIis1MHllYXJzIjsKICBzdHJpbmcgbXlTdHJpbmcyID0gIis1MHllYXJzLTRtb250aHMrM3dlZWtzKzVtaW51dGVzIjsKCiAgcmVnZXggcmcoIihbXFwrLV1bMC05XStbQS1aYS16XSspIiwgcmVnZXg6OmV4dGVuZGVkKTsKICBzbWF0Y2ggc207CiAgd2hpbGUgKHJlZ2V4X3NlYXJjaChteVN0cmluZzIsIHNtLCByZykpIHsKICAJY291dCA8PHNtWzBdPDxlbmRsOwogIAlteVN0cmluZzIgPSBzbS5zdWZmaXgoKS5zdHIoKTsgCgogIAlzdHJpbmdzdHJlYW0gc3MgKHNtWzBdKTsKICAJCiAgCWNoYXIgbWF0aE9wZXJhdG9yOwogICAgaW50IHZhbHVlOwogICAgc3RyaW5nIHRpbWVVbml0OwoKICAgIHNzID4+IG1hdGhPcGVyYXRvciA+PiB2YWx1ZSA+PiB0aW1lVW5pdDsKCiAgICBjb3V0IDw8ICJtYXRoT3BlcmF0b3I6ICIgPDwgbWF0aE9wZXJhdG9yIDw8IGVuZGw7CiAgICBjb3V0IDw8ICJ2YWx1ZTogIiA8PCB2YWx1ZSA8PCBlbmRsOwogICAgY291dCA8PCAidGltZVVuaXQ6ICIgPDwgdGltZVVuaXQgPDwgZW5kbDsKICAJCiAgfQoKICAKfQ==