我正在尝试使用正则表达式构建程序
“ regexec”返回0(这意味着该行与regex兼容),我不知道为什么。 我正在使用https://regex101.com/检查我的正则表达式。
这是我的代码:
int main ()
{
regex_t regex_32,regex_8;
int reti;
string s32("00001206 ffffff00 00200800 00001044");
string s8("00 00 00 00 00 00 00 00 11 11 11 11 38 00 20 00");
reti = regcomp(®ex_32, "([0-9a-fA-F]{8}( |$))+$", REG_EXTENDED);
if (reti) {
fprintf(stderr, "Could not compile regex\n");
return (1);
}
reti = regcomp(®ex_8, "([0-9a-fA-F]{2}( |$))+$", REG_EXTENDED);
if (reti) {
fprintf(stderr, "Could not compile regex\n");
return (1);
}
int ret = regexec(®ex_8, s8.c_str(), 0, NULL, 0);
if (!ret) {
cout<<"s8 ok"<<endl;
}
ret = regexec(®ex_8, s32.c_str(), 0, NULL, 0);
if (!ret) {
cout<<"s32 with regex8->not ok"<<endl;
}
ret = regexec(®ex_32, s32.c_str(), 0, NULL, 0);
if (!ret) {
cout<<"s32 ok"<<endl;
}
ret = regexec(®ex_32, s8.c_str(), 0, NULL, 0);
if (!ret) {
cout<<"s8 with regex32->not ok"<<endl;
}
return 0;
}
实际输出为:
s8 ok
s32 with regex8->not ok
s32 ok
预期输出为:
s8 ok
s32 ok
出什么问题了?