| 1 2 3 4 5 6 | int regcomp(regex_t *preg, const char *pattern, int cflags) 功能:将要进行匹配的正则表达式pattern进行编译,做匹配前的准备工作 参数: preg, 输出参数,用来保存编译后的正则表达式结果 pattern, 输入参数,传入要进行编译的正则表达式的字符串 cflags, 输入参数,用来指定正则表达式匹配过程中的一些选项 返回值:编译成功返回0,失败返回非0的错误码 |
| 1 2 3 4 5 6 7 8 9 | int regexec(const regex_t *preg, const char *string, size_t nmatch, regmatch_t pmatch[], int eflags) 功能:用来检测字符串string是否匹配正则表达式preg 参数: preg, 输入参数,在(1)regcomp中编译好的正则表达式规则 string, 输入参数,用来被匹配的字符串 nmatch, 输入参数,用来指定pmatch参数所对应的数组的长度 pmatch, 输出参数,用来输出在string中匹配preg的具体位置 eflag, 输入参数,用来指定正则表达式匹配过程中的一些选项 返回值: 如果string匹配preg所指定的规则,则返回0, 否则返回非0 |
| 1 2 3 4 5 6 7 | size_t regerror(int errcode, const regex_t *preg, char *errbuf, size_t errbuf_size) 功能:用来把在regcompt和regexec中产生的错误码转化成字符串形式的错误信息 参数: errcode, 输入参数,在regcomp或regexec调用中返回的错误码 preg, 输入参数,与错误码所对应的编译过的正则表达式结构 errbuf, 输出参数,用来返回错误信息的buffer,如果buffer不够所需大小,错误信息将被截断 errbuf_size, 输入参数,返回错误信息的buffer的大小 返回值: 如果errbuf_size为0,那么regerror返回错误信息所需要的buffer的大小 |
| 1 2 3 4 | void regfree (regex_t *preg) 功能: 用来释放由regcomp编译时生成的preg结构所占用的内存 参数: preg, 输入参数,由regcomp编译时生成的正则表达的结构指针 返回值: 无 |
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 | #include <sys /types.h> #include <regex .h> #include <stdio .h> int main(int argc, char ** argv) { if (argc != 3) { printf("Usage: %s RegexString Text ", 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 ", pText, pRegexStr); regfree(&oRegex); return 0; } } unErrMsgLen = regerror(nErrCode, &oRegex, szErrMsg, sizeof(szErrMsg)); unErrMsgLen = unErrMsgLen < sizeof(szErrMsg) ? unErrMsgLen : sizeof(szErrMsg) - 1; szErrMsg[unErrMsgLen] = " "; printf("ErrMsg: %s ", szErrMsg); regfree(&oRegex); return 1; } |
| 1 2 3 4 5 | linuxidc@www.linuxidc.com:~/Program$ gcc TestRegex.c -o Regex linuxidc@www.linuxidc.com:~/Program$ ./Regex "http://www..*.com" "https://www.taobao.com" ErrMsg: No match linuxidc@www.linuxidc.com:~/Program$ ./Regex "http://www..*.com" "http://www.taobao.com" http://www.taobao.com matches http://www..*.com |
| 1 2 3 4 5 6 7 8 9 10 | pcre *pcre_compile(const char *pattern, int options, const char **errptr, int *erroffset, const unsigned char *tableptr); 功能:编译指定的正则表达式 参数:pattern, 输入参数,将要被编译的字符串形式的正则表达式 options, 输入参数,用来指定编译时的一些选项 errptr, 输出参数,用来输出错误信息 erroffset, 输出参数,pattern中出错位置的偏移量 tableptr, 输入参数,用来指定字符表,一般情况用NULL, 使用缺省的字符表 返回值:被编译好的正则表达式的pcre内部表示结构 |
| 1 2 3 4 5 6 7 8 9 10 11 12 13 | int pcre_exec(const pcre *code, const pcre_extra *extra, const char *subject, int length, int startoffset, int options, int *ovector, int ovecsize); 功能:用来检查某个字符串是否与指定的正则表达式匹配 参数: code, 输入参数,用pcre_compile编译好的正则表达结构的指针 extra, 输入参数,用来向pcre_exec传一些额外的数据信息的结构的指针 subject, 输入参数,要被用来匹配的字符串 length, 输入参数, 要被用来匹配的字符串的指针 startoffset, 输入参数,用来指定subject从什么位置开始被匹配的偏移量 options, 输入参数, 用来指定匹配过程中的一些选项 ovector, 输出参数,用来返回匹配位置偏移量的数组 ovecsize, 输入参数, 用来返回匹配位置偏移量的数组的最大大小 返回值:匹配成功返回非负数,匹配返回负数 |