发布网友 发布时间:2022-04-26 03:25
共1个回答
热心网友 时间:2022-06-20 11:55
一般地可以通过正则表达式库进行检测也可以手动进行检测常见的ip地址是点分十进制的字符串形式类似192.168.1.110.2.4.1这种四个部分每个部分的最大值是255所以正则表达式简单点可以是(\d+\.){3}\d+但这样并不能完全正确地匹配ip地址如果所要匹配的文件中确定出现的类似字符串为ip地址的话就完全没有问题准确点可以(\d{1,3}\.){3}\d{1,3}然后再对每个数字进行判断判断是否超出了ip地址的范围下面是一个简单的使用正则表达式的代码#include #include #include int main(int argc,char **argv){ char *s="192.168.1.1"; pcre *code; int rc; int ovector[2*3]; const char *errptr; const char *ip; int erroffet; char *p; char buf[20]; code=pcre_compile("(\\d{1,3}\\.){3}\\d{1,3}",0, &errptr,&erroffet,NULL); if((rc=pcre_exec(code,NULL,s,strlen(s),0,0,ovector,2*3)) > 0) { pcre_get_substring(s,ovector,rc,0,&ip); snprintf(buf,20,"%s",ip); pcre_free_substring(ip); for(p=strtok(buf,".");p != NULL;p=strtok(NULL,".")) { if(atoi(p) > 255) goto end; } printf("正确ip!\n"); return 0; }end: printf("错误的ip!\n"); pcre_free(code); return 0;}