#include <stdio.h>
#include <stdlib.h>
#include <regex.h>
int main (void)
{
int match;
int err;
regex_t preg;
regmatch_t pmatch[4];
size_t nmatch = 4;
const char *str_request = "abc:1234567890@werty.wer.sdfg.net";
const char *str_regex = "(^|[^[:alnum:]_])(abc|def):[0-9]{10}@([A-Za-z0-9].*)";
err = regcomp(&preg, str_regex, REG_EXTENDED);
if (err == 0)
{
match = regexec(&preg, str_request, nmatch, pmatch, 0);
nmatch = preg.re_nsub;
regfree(&preg);
if (match == 0)
{
printf("\"%.*s\"\n", pmatch
[2].
rm_eo - pmatch
[2].
rm_so, &str_request
[pmatch
[2].
rm_so]); printf("\"%.*s\"\n", pmatch
[3].
rm_eo - pmatch
[3].
rm_so, &str_request
[pmatch
[3].
rm_so]); }
else if (match == REG_NOMATCH)
{
}
}
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdGRsaWIuaD4KI2luY2x1ZGUgPHJlZ2V4Lmg+CgppbnQgbWFpbiAodm9pZCkKewogIGludCBtYXRjaDsKICBpbnQgZXJyOwogIHJlZ2V4X3QgcHJlZzsKICByZWdtYXRjaF90IHBtYXRjaFs0XTsKICBzaXplX3Qgbm1hdGNoID0gNDsKICBjb25zdCBjaGFyICpzdHJfcmVxdWVzdCA9ICJhYmM6MTIzNDU2Nzg5MEB3ZXJ0eS53ZXIuc2RmZy5uZXQiOwoKICBjb25zdCBjaGFyICpzdHJfcmVnZXggPSAiKF58W15bOmFsbnVtOl1fXSkoYWJjfGRlZik6WzAtOV17MTB9QChbQS1aYS16MC05XS4qKSI7CiAgZXJyID0gcmVnY29tcCgmcHJlZywgc3RyX3JlZ2V4LCBSRUdfRVhURU5ERUQpOwogIGlmIChlcnIgPT0gMCkKICAgIHsKICAgICAgbWF0Y2ggPSByZWdleGVjKCZwcmVnLCBzdHJfcmVxdWVzdCwgbm1hdGNoLCBwbWF0Y2gsIDApOwogICAgICBubWF0Y2ggPSBwcmVnLnJlX25zdWI7CiAgICAgIHJlZ2ZyZWUoJnByZWcpOwogICAgICBpZiAobWF0Y2ggPT0gMCkKICAgICAgICB7CiAgICAgICAgICBwcmludGYoIlwiJS4qc1wiXG4iLCBwbWF0Y2hbMl0ucm1fZW8gLSBwbWF0Y2hbMl0ucm1fc28sICZzdHJfcmVxdWVzdFtwbWF0Y2hbMl0ucm1fc29dKTsKICAgICAgICAgIHByaW50ZigiXCIlLipzXCJcbiIsIHBtYXRjaFszXS5ybV9lbyAtIHBtYXRjaFszXS5ybV9zbywgJnN0cl9yZXF1ZXN0W3BtYXRjaFszXS5ybV9zb10pOwogICAgICAgIH0KICAgICAgZWxzZSBpZiAobWF0Y2ggPT0gUkVHX05PTUFUQ0gpCiAgICAgICAgewogICAgICAgICAgcHJpbnRmKCJ1bm1hdGNoXG4iKTsKICAgICAgICB9CiAgICB9CiAgcmV0dXJuIDA7CiB9