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;
}

相关文章

正则替换html代码中img标签的src值在开发富文本信息在移动端...
正则表达式
AWK是一种处理文本文件的语言,是一个强大的文件分析工具。它...
正则表达式是特殊的字符序列,利用事先定义好的特定字符以及...
Python界一名小学生,热心分享编程学习。
收集整理每周优质开发者内容,包括、、等方面。每周五定期发...