文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>GNU的Regex

GNU的Regex

时间:2010-08-30  来源:zubryan

前段时间和朋友在做项目时发现,使用.net本身提供的的正则匹配效率极其低,于是考虑使用了GNU的Regex,感觉完全不是一个等级,速度快了好多。以下是一个例子:
#include <sys /types.h>
#include <regex .h>
#include <stdio .h>

int main(int argc, char ** argv)
{
if (argc != 3)
{
printf("Usage: %s RegexString Text\n", argv[0]);
return 1;
}

const char * pRegexStr = argv[1];
const char * pText = argv[2];

regex_t oRegex;
int nErrCode = 0;
char szErrMsg[1024] = {0};
size_t unErrMsgLen = 0;

if ((nErrCode = regcomp(&oRegex, pRegexStr, 0)) == 0)
{
if ((nErrCode = regexec(&oRegex, pText, 0, NULL, 0)) == 0)
{
printf("%s matches %s\n", pText, pRegexStr);
regfree(&oRegex);
return 0;
}
}

unErrMsgLen = regerror(nErrCode, &oRegex, szErrMsg, sizeof(szErrMsg));
unErrMsgLen = unErrMsgLen < sizeof(szErrMsg) ? unErrMsgLen : sizeof(szErrMsg) - 1;
szErrMsg[unErrMsgLen] = '\0';
printf("ErrMsg: %s\n", szErrMsg);

regfree(&oRegex);
return 1;
}

特别说明
regexec函数只能匹配第一个找到的字符串,如果要找所有的匹配字符串,则只能通过字符串移动
offset来一个个做了。



相关阅读 更多 +
排行榜 更多 +
辰域智控app

辰域智控app

系统工具 下载
网医联盟app

网医联盟app

运动健身 下载
汇丰汇选App

汇丰汇选App

金融理财 下载