前端之家收集整理的这篇文章主要介绍了
vs 2010 正则表达式校验,
前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
#include <sys/types.h>
#include "regex.h"
#include <stdio.h>
#include <string.h>
/* 取子串的函数 */
static char* substr(const char*str,unsigned start,unsigned end)
{
unsigned n = end - start;
static char stbuf[256];
strncpy(stbuf,str + start,n);
stbuf[n] = 0;
return stbuf;
}
/* 主程序 */
int main(int argc,char** argv)
{
char * pattern = "";
int x,z,lno = 0,cflags = REG_EXTENDED | REG_NOSUB ;
char ebuf[128];
char lbuf[256] = "";
regex_t reg;
regmatch_t pm[10];
const size_t nmatch = 10;
/* 编译正则表达式*/
//pattern = argv[1];
z = regcomp( ®,pattern,cflags);
if (z != 0) {
regerror(z,®,ebuf,sizeof(ebuf));
fprintf(stderr,"%s: pattern '%s' \n",pattern);
return 1;
}
/* 逐行处理输入的数据 */
//while (fgets(lbuf,sizeof(lbuf),stdin)) {
// ++lno;
if ((z = strlen(lbuf)) > 0 && lbuf[z - 1] == '\n')
lbuf[z - 1] = 0;
/* 对每一行应用正则表达式进行匹配 */
z = regexec(®,lbuf,nmatch,pm,0);
if (z == REG_NOMATCH) return 0;
else if (z != 0) {
regerror(z,sizeof(ebuf));
fprintf(stderr,"%s: regcom('%s')\n",lbuf);
return 2;
}
/* 输出处理结果 */
for (x = 0; x < nmatch && pm[x].rm_so != -1; ++x) {
if (!x) printf("%04d: %s\n",lno,lbuf);
printf("$%d='%s'\n",x,substr(lbuf,pm[x].rm_so,pm[x].rm_eo));
}
//}
/* 释放正则表达式 */
regfree(®);
return 0;
}
原文链接:https://www.f2er.com/regex/358907.html