#include <stdio.h>
#include <regex.h>
int match(char *reg, char *string)
{
regex_t regex;
int res;
res = regcomp(®ex, reg, REG_EXTENDED);
if (res)
{
fprintf(stderr
, "Could not compile regex\n"); return 1;
}
res = regexec(®ex, string, 0, NULL, 0);
return res;
}
int main(void)
{
char *regex = "^([[:alnum:]_-]{24}\\.[[:alnum:]_-]{6}\\.[[:alnum:]_-]{27}|mfa\\.[[:alnum:]_-]{84})$";
char *key = "xxxxxxxxxxxxxxxxxxxxxxxx.xxxxxx.xxxxxxxxxxxxxxxxxxxxxxxxxxx";
if (match
(regex
, key
) == 0) printf("Valid key!\n"); else printf("Invalid key!\n");
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxyZWdleC5oPgoKaW50IG1hdGNoKGNoYXIgKnJlZywgY2hhciAqc3RyaW5nKQp7CiAgICByZWdleF90IHJlZ2V4OwogICAgaW50IHJlczsKCiAgICByZXMgPSByZWdjb21wKCZyZWdleCwgcmVnLCBSRUdfRVhURU5ERUQpOwogICAgaWYgKHJlcykKICAgIHsKICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIkNvdWxkIG5vdCBjb21waWxlIHJlZ2V4XG4iKTsKICAgICAgICByZXR1cm4gMTsKICAgIH0KCiAgICByZXMgPSByZWdleGVjKCZyZWdleCwgc3RyaW5nLCAwLCBOVUxMLCAwKTsKICAgIHJldHVybiByZXM7Cn0KCmludCBtYWluKHZvaWQpCnsKICAgIGNoYXIgKnJlZ2V4ID0gIl4oW1s6YWxudW06XV8tXXsyNH1cXC5bWzphbG51bTpdXy1dezZ9XFwuW1s6YWxudW06XV8tXXsyN318bWZhXFwuW1s6YWxudW06XV8tXXs4NH0pJCI7CiAgICBjaGFyICprZXkgPSAieHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4Lnh4eHh4eC54eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHgiOwoKICAgIGlmIChtYXRjaChyZWdleCwga2V5KSA9PSAwKSBwcmludGYoIlZhbGlkIGtleSFcbiIpOwogICAgZWxzZSBwcmludGYoIkludmFsaWQga2V5IVxuIik7CgogICAgcmV0dXJuIDA7Cn0=