正则表达式问题请教!
POSIX有库函数支持“正则表达式”(regular expression),下面是我的使用方法:
#include <regex.h>
int main()
{
size_t i, k, n;
regex_t RegHandle;
char* Name = "A01B49/02";
char* Pattern = "^(\\D)(\\d+)(\\D)(\\d+)\\/(.*)$";
regmatch_t Matchs[256];
char Result[256];
k = regcomp(&RegHandle, Pattern, REG_EXTENDED);
if (k != 0) return 0;
n = regexec(&RegHandle, Name, 256, Matchs, 0);
if (n == 0) for (i = 0; i <= RegHandle.re_nsub; i++)
{
if ((Matchs.rm_so < 0) || (Matchs.rm_eo < 0)) continue;
n = Matchs.rm_eo - Matchs.rm_so;
if (n >= 255 - k)
{
n = 255 - k;
if (n == 0) break;
}
memcpy(Result + k, Name + Matchs.rm_so, n);
k += n;
}
printf("%d\t%d\n", (int)n, (int)k);
printf("%s\t%s\n", Pattern, Name);
regfree(&RegHandle);
Result[k] = 0;
return 1;
}
可是regexec总是返回1(没有匹配),有谁知道问题出在哪里?请指点,谢谢。
[ 本帖最后由 littlestar 于 2006-9-28 11:47 编辑 ]
|