#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 = "GET http://w...content-available-to-author-only...e.com HTTP/1.1";
const char *str_regex = "([A-Za-z]+) +(http?://.*) +(HTTP/[0-9][.][0-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
[1].
rm_eo - pmatch
[1].
rm_so, &str_request
[pmatch
[1].
rm_so]); 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+CgppbnQgbWFpbiAodm9pZCkKewogIGludCBtYXRjaDsKICBpbnQgZXJyOwogIHJlZ2V4X3QgcHJlZzsKICByZWdtYXRjaF90IHBtYXRjaFs0XTsKICBzaXplX3Qgbm1hdGNoID0gNDsKICBjb25zdCBjaGFyICpzdHJfcmVxdWVzdCA9ICJHRVQgaHR0cDovL3cuLi5jb250ZW50LWF2YWlsYWJsZS10by1hdXRob3Itb25seS4uLmUuY29tIEhUVFAvMS4xIjsKCiAgY29uc3QgY2hhciAqc3RyX3JlZ2V4ID0gIihbQS1aYS16XSspICsoaHR0cD86Ly8uKikgKyhIVFRQL1swLTldWy5dWzAtOV0pIjsKICBlcnIgPSByZWdjb21wKCZwcmVnLCBzdHJfcmVnZXgsIFJFR19FWFRFTkRFRCk7CiAgaWYgKGVyciA9PSAwKQogICAgewogICAgICBtYXRjaCA9IHJlZ2V4ZWMoJnByZWcsIHN0cl9yZXF1ZXN0LCBubWF0Y2gsIHBtYXRjaCwgMCk7CiAgICAgIG5tYXRjaCA9IHByZWcucmVfbnN1YjsKICAgICAgcmVnZnJlZSgmcHJlZyk7CiAgICAgIGlmIChtYXRjaCA9PSAwKQogICAgICAgIHsKICAgICAgICAgIHByaW50ZigiXCIlLipzXCJcbiIsIHBtYXRjaFsxXS5ybV9lbyAtIHBtYXRjaFsxXS5ybV9zbywgJnN0cl9yZXF1ZXN0W3BtYXRjaFsxXS5ybV9zb10pOwogICAgICAgICAgcHJpbnRmKCJcIiUuKnNcIlxuIiwgcG1hdGNoWzJdLnJtX2VvIC0gcG1hdGNoWzJdLnJtX3NvLCAmc3RyX3JlcXVlc3RbcG1hdGNoWzJdLnJtX3NvXSk7CiAgICAgICAgICBwcmludGYoIlwiJS4qc1wiXG4iLCBwbWF0Y2hbM10ucm1fZW8gLSBwbWF0Y2hbM10ucm1fc28sICZzdHJfcmVxdWVzdFtwbWF0Y2hbM10ucm1fc29dKTsKICAgICAgICB9CiAgICAgIGVsc2UgaWYgKG1hdGNoID09IFJFR19OT01BVENIKQogICAgICAgIHsKICAgICAgICAgIHByaW50ZigidW5tYXRjaFxuIik7CiAgICAgICAgfQogICAgfQogIHJldHVybiAwOwogfQ==