vs 2010 正则表达式校验

前端之家收集整理的这篇文章主要介绍了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( &reg,pattern,cflags);
	if (z != 0) {
		regerror(z,&reg,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(&reg,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(&reg);
	return 0;
}
原文链接:https://www.f2er.com/regex/358907.html

猜你在找的正则表达式相关文章