#include <stdio.h>
#include <regex.h>
void check_RE(char * r, regex_t RE)
{
printf ("%s - %s\n", r
, !regexec
(&RE
, r
, 0, NULL
, 0) ? "Match" : "No Match"); }
int main ()
{
regex_t regex;
int ret = regcomp(®ex, "^(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])(\\.(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])){3}$", REG_EXTENDED);
if(ret)
char RE_list[][32] =
{
"0.0.0.0",
"123.456.789.123",
"a.b.c.d",
"1.2.34.567",
"1111.1.1.1",
".1.1.1",
"1,1,1,1"
};
for(int i = 0; i < sizeof(RE_list) / sizeof(RE_list[0]); i++)
check_RE(RE_list[i], regex);
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxyZWdleC5oPgoKdm9pZCBjaGVja19SRShjaGFyICogciwgcmVnZXhfdCBSRSkKewogICAgcHJpbnRmICgiJXMgLSAlc1xuIiwgciwgIXJlZ2V4ZWMoJlJFLCByLCAwLCBOVUxMLCAwKSA/ICJNYXRjaCIgOiAiTm8gTWF0Y2giKTsKfQoKCmludCBtYWluICgpCnsKICAgIHJlZ2V4X3QgcmVnZXg7CiAgICBpbnQgcmV0ID0gcmVnY29tcCgmcmVnZXgsICJeKDI1WzAtNV18MlswLTRdWzAtOV18MVswLTldWzAtOV18WzEtOV0/WzAtOV0pKFxcLigyNVswLTVdfDJbMC00XVswLTldfDFbMC05XVswLTldfFsxLTldP1swLTldKSl7M30kIiwgUkVHX0VYVEVOREVEKTsKICAgIGlmKHJldCkKICAgICAgICBwcmludGYoImVycjFcbiIpOwoKICAgIGNoYXIgIFJFX2xpc3RbXVszMl0gPSAKICAgIHsKICAgICAgICAiMC4wLjAuMCIsCiAgICAgICAgIjEyMy40NTYuNzg5LjEyMyIsCiAgICAgICAgImEuYi5jLmQiLAogICAgICAgICIxLjIuMzQuNTY3IiwKICAgICAgICAiMTExMS4xLjEuMSIsCiAgICAgICAgIi4xLjEuMSIsCiAgICAgICAgIjEsMSwxLDEiCiAgICB9OwoKICAgIGZvcihpbnQgaSA9IDA7IGkgPCBzaXplb2YoUkVfbGlzdCkgLyBzaXplb2YoUkVfbGlzdFswXSk7IGkrKykKICAgICAgICBjaGVja19SRShSRV9saXN0W2ldLCByZWdleCk7CgogICAgcmV0dXJuIDA7Cn0=