#include<sys/types.h>
#include<regex.h>
#include<stdio.h>
int main(int argc, char** argv)
{
if(argc!=3){
printf("Usage: %s RegexString Text\n",argv[0]);
return 1;
}
const char* pregexstr = argv[1];//正则表达式
const char* ptext = argvv[2]; //待匹配的字符串
regex_t oregex;//编译后的结构体
int nerrcode = 0;
char szerrmsg[1024] = {0};//保存错误信息的数组
size_t unerrmsglen = 0;
if((nerrcode = regcomp(&oregex, pregexstr,REG_EXTEND|REG_NPSUB)) == 0)//编译正则表达式
{
if(nerrcode = regexec(&oregex, ptext, 0, NULL,0)) == 0)//执行匹配
{
printf("%s matched %s\n",ptext, pregexstr);
return 0;
}
}
//如果匹配失败
unerrmsglen = regerror(nerrcode, &oregex, szerrmsg,sizeof(szerrmsg)-1;//编译错误,存到szerrmsg中错误描述
unerrmsglen = unerrmsglen<sizeof(szerrmsg)?unerrmsglen:sizeof(szerrmsg)-1;//错误信息较长情况
szerrmsg[unerrmsglen] = '\0';
printf("Regex error MSG: %s \n",szerrmsg);
}
regfree(&oregex);
return 1;//非正常退出
保存之后编译一下make regex
然后输入参数运行:./regex "正则表达式" "待匹配的字符串"