#include <string>
#include <iostream>
#include <regex>
using namespace std;
int main( ) {
std:: string pat = R"(\s*(.*?)\s*=\s*(\" (.*?(?:[\\ ]\" .*?)*)\" )\s*([,|.*?]))" ;
std:: regex r( pat) ;
std:: cout << pat << "\n " ;
std:: string s = R"(data1 = " value 1 ", data2 = " value 2 ", data3 = " data4( " hey " ) ",)" ;
std:: cout << s << "\n " ;
for ( std:: sregex_iterator i = std:: sregex_iterator ( s.begin ( ) , s.end ( ) , r) ;
i ! = std:: sregex_iterator ( ) ;
++ i)
{
std:: smatch m = * i;
std:: cout << " Capture 1: " << m[ 1 ] .str ( ) << " at Position " << m.position ( 1 ) << '\n ' ;
std:: cout << " Capture 3: " << m[ 3 ] .str ( ) << " at Position " << m.position ( 3 ) << '\n ' ;
}
return 0 ;
}
I2luY2x1ZGUgPHN0cmluZz4KI2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8cmVnZXg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgppbnQgbWFpbigpIHsKCXN0ZDo6c3RyaW5nIHBhdCA9IFIiKFxzKiguKj8pXHMqPVxzKihcIiguKj8oPzpbXFxdXCIuKj8pKilcIilccyooWyx8Lio/XSkpIjsKCXN0ZDo6cmVnZXggcihwYXQpOwoJc3RkOjpjb3V0IDw8IHBhdCA8PCAiXG4iOwoJCglzdGQ6OnN0cmluZyBzID0gUiIoZGF0YTEgPSAidmFsdWUgMSIsICAgZGF0YTIgPSAidmFsdWUgMiIsICBkYXRhMyA9ICIgZGF0YTQoIiBoZXkgIikgIiwpIjsKCXN0ZDo6Y291dCA8PCBzIDw8ICJcbiI7Cglmb3Ioc3RkOjpzcmVnZXhfaXRlcmF0b3IgaSA9IHN0ZDo6c3JlZ2V4X2l0ZXJhdG9yKHMuYmVnaW4oKSwgcy5lbmQoKSwgcik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSAhPSBzdGQ6OnNyZWdleF9pdGVyYXRvcigpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICsraSkKICAgIHsKICAgICAgICBzdGQ6OnNtYXRjaCBtID0gKmk7CiAgICAgICAgc3RkOjpjb3V0IDw8ICIgICAgQ2FwdHVyZSAxOiAiIDw8IG1bMV0uc3RyKCkgPDwgIiBhdCBQb3NpdGlvbiAiIDw8IG0ucG9zaXRpb24oMSkgPDwgJ1xuJzsKICAgICAgICBzdGQ6OmNvdXQgPDwgIiAgICBDYXB0dXJlIDM6ICIgPDwgbVszXS5zdHIoKSA8PCAiIGF0IFBvc2l0aW9uICIgPDwgbS5wb3NpdGlvbigzKSA8PCAnXG4nOwogICAgfQoJcmV0dXJuIDA7Cn0K