You can develop your own functions using functions offered by #include
like regcomp
, and regexec
пример
int match_patterns(char *pch,char *pattern)
{
regex_t *regex;
regmatch_t *result;
int err_no = 0;
int start = 0;
regex = (regex_t *) calloc(1,sizeof(regex_t));
if((err_no = regcomp(regex, pattern, REG_EXTENDED)) != 0)
{
size_t length;
char *buffer;
length = regerror (err_no, regex, NULL, 0);
buffer = malloc(length);
regerror (err_no, regex, buffer, length);
free(buffer);
regfree(regex);
return -1; //error
}
result = (regmatch_t *) calloc(1,sizeof(regmatch_t));
if(result == NULL)
{
return -1; //error
}
while(regexec(regex, pch+start, 1, result, 0) == 0)
{
start +=result->rm_eo;
}
regfree(regex);
free(regex);
if((result->rm_so == 0)&&(result->rm_eo == strlen(pch)))
{
return 0; //OK
}
return -1; //error
}
Эта функция вернет 0, если строка pch
соответствует шаблону regexp pattern
и возвращает -1 в противном случае.
пример
int main()
{
if (match_patterns("1234.abc", "[0-9]+.[a-d]+")==0)
printf("OK!\n");
else
printf("NOK!\n");
}
match_patterns()
в этом случае вернет 0
Если вы используете эту функцию, не забудьте добавить следующий iclude:
#include
#include