#include<regex.h>
您可以使用like提供的函数开发自己的函数regcomp
,并且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
}
pch
如果字符串与正则表达式模式匹配,此函数将返回 0,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<regex.h>
#include<string.h>