#include <iostream>
#include <regex>
#include <string>
#include <algorithm>
using namespace std;
int main() {
string input("tag = value\ntag2 = value2\nvalue continuation2\n# comment for tag3\ntag3 = value3");
const regex re("(?:\\s*#.*\\n)*(\\w+)\\s*=\\s*((?:[^#=\\n]+(\\n|$))+)");
for (sregex_iterator i(input.cbegin(), input.cend(), re); i != sregex_iterator(); ++i) {
const string tag = i->operator[](1);
const string value = i->operator[](2);
cout << tag << ':' << value << endl;
}
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8cmVnZXg+CiNpbmNsdWRlIDxzdHJpbmc+CiNpbmNsdWRlIDxhbGdvcml0aG0+Cgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKaW50IG1haW4oKSB7CglzdHJpbmcgaW5wdXQoInRhZyA9IHZhbHVlXG50YWcyID0gdmFsdWUyXG52YWx1ZSBjb250aW51YXRpb24yXG4jIGNvbW1lbnQgZm9yIHRhZzNcbnRhZzMgPSB2YWx1ZTMiKTsKCgljb25zdCByZWdleCByZSgiKD86XFxzKiMuKlxcbikqKFxcdyspXFxzKj1cXHMqKCg/OlteIz1cXG5dKyhcXG58JCkpKykiKTsKCglmb3IgKHNyZWdleF9pdGVyYXRvciBpKGlucHV0LmNiZWdpbigpLCBpbnB1dC5jZW5kKCksIHJlKTsgaSAhPSBzcmVnZXhfaXRlcmF0b3IoKTsgKytpKSB7CgkJY29uc3Qgc3RyaW5nIHRhZyA9IGktPm9wZXJhdG9yW10oMSk7CgkJY29uc3Qgc3RyaW5nIHZhbHVlID0gaS0+b3BlcmF0b3JbXSgyKTsKCgkJY291dCA8PCB0YWcgPDwgJzonIDw8IHZhbHVlIDw8IGVuZGw7Cgl9Cn0=