#include <stdio.h>
#include <regex.h>
#include <stdlib.h>
#include <string.h>
#define MEM_STEP 1000
char* input_text(){
int sizetext = MEM_STEP;
int index = 0;
char c;
char* text
= malloc(MEM_STEP
); if (!text) {return NULL;}
if(index >= sizetext-1){
sizetext+=MEM_STEP;
if (!text) {return NULL;}
}
text[index]=c;
index++;
if (strstr(text
, "Fin.") != NULL
) { break;
}
}
text[index]='\0';
return text;
}
int main()
{
char* text = input_text();
regex_t regex;
char* pattern = "([A-Za-z0-9_]+)@([A-Za-z0-9_-]+):\\s?~\\s?# (.+)";
regcomp(®ex, pattern, REG_EXTENDED);
regmatch_t match[4];
while (regexec(®ex, text, 4, match, 0) == 0)
{
printf("%.*s - ", match
[0].
rm_eo - match
[0].
rm_so, text
+ match
[0].
rm_so); text += match[0].rm_eo;
}
regfree(®ex);
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxyZWdleC5oPgojaW5jbHVkZSA8c3RkbGliLmg+CiNpbmNsdWRlIDxzdHJpbmcuaD4KCiNkZWZpbmUgTUVNX1NURVAgMTAwMAoKY2hhciogaW5wdXRfdGV4dCgpewogICAgaW50IHNpemV0ZXh0ID0gTUVNX1NURVA7CiAgICBpbnQgaW5kZXggPSAwOwogICAgY2hhciBjOwogICAgY2hhciogdGV4dCA9IG1hbGxvYyhNRU1fU1RFUCk7CiAgICBpZiAoIXRleHQpIHtyZXR1cm4gTlVMTDt9CiAgICAKICAgIHdoaWxlKChjID0gZ2V0Y2hhcigpKSAhPSBFT0YpewogICAgICAgIGlmKGluZGV4ID49IHNpemV0ZXh0LTEpewogICAgICAgICAgICBzaXpldGV4dCs9TUVNX1NURVA7CiAgICAgICAgICAgIHRleHQgPSByZWFsbG9jKHRleHQsc2l6ZXRleHQpOwogICAgICAgICAgICBpZiAoIXRleHQpIHtyZXR1cm4gTlVMTDt9CiAgICAgICAgfQogICAgICAgIHRleHRbaW5kZXhdPWM7CiAgICAgICAgaW5kZXgrKzsKICAgICAgICBpZiAoc3Ryc3RyKHRleHQsICJGaW4uIikgIT0gTlVMTCkgewogICAgICAgICAgICBicmVhazsKICAgICAgICB9CiAgICB9CiAgICB0ZXh0W2luZGV4XT0nXDAnOwogICAgcmV0dXJuIHRleHQ7Cn0KaW50IG1haW4oKQp7CiAgICBjaGFyKiB0ZXh0ID0gaW5wdXRfdGV4dCgpOwoKICAgIHJlZ2V4X3QgcmVnZXg7CgogICAgY2hhciogcGF0dGVybiA9ICIoW0EtWmEtejAtOV9dKylAKFtBLVphLXowLTlfLV0rKTpcXHM/flxccz8jICguKykiOwoKICAgIHJlZ2NvbXAoJnJlZ2V4LCBwYXR0ZXJuLCBSRUdfRVhURU5ERUQpOwoKICAgIHJlZ21hdGNoX3QgbWF0Y2hbNF07CgogICAgd2hpbGUgKHJlZ2V4ZWMoJnJlZ2V4LCB0ZXh0LCA0LCBtYXRjaCwgMCkgPT0gMCkKICAgIHsKICAgICAgICBwcmludGYoIiUuKnMgLSAiLCBtYXRjaFswXS5ybV9lbyAtIG1hdGNoWzBdLnJtX3NvLCB0ZXh0ICsgbWF0Y2hbMF0ucm1fc28pOwogICAgICAgIHRleHQgKz0gbWF0Y2hbMF0ucm1fZW87CiAgICB9CiAgICByZWdmcmVlKCZyZWdleCk7CiAgICByZXR1cm4gMDsKfQ==