2024-10-30 16:33:17
一般地可以通过正则表达式库进行检测
也可以手动进行检测
常见的ip地址是点分十进制的字符串形式
类似
192.168.1.1
10.2.4.1
这种
四个部分每个部分的最大值是255
所以正则表达式简单点可以是
(\d+\.){3}\d+
但这样并不能完全正确地匹配ip地址
如果所要匹配的文件中确定出现的类似字符串为ip地址的话就完全没有问题
准确点可以
(\d{1,3}\.){3}\d{1,3}
然后再对每个数字进行判断
判断是否超出了ip地址的范围
下面是一个简单的使用正则表达式的代码
#include <stdio.h>
#include <string.h>
#include <pcre.h>
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;
}
2024-10-30 08:26:12
2024-10-30 13:32:19