gpt4 book ai didi

c - 如何在 C 中用 regexec 匹配一个数字

转载 作者:太空宇宙 更新时间:2023-11-04 06:28:50 26 4
gpt4 key购买 nike

我正在尝试检查字符串是否为有效数字。有效数字类似于 123 或 123.456。我尝试使用 [0-9]+(\\.[0-9]+)? 进行匹配,但这不起作用。

这是我目前所拥有的。

#include <stdio.h>
#include <regex.h>

int main()
{
const char* string = "123";
regex_t preg;

regcomp(&preg, "[0-9]+(\\.[0-9]+)?", 0);

if(regexec(&preg, string, (size_t)0, NULL, 0) == 0){
printf("valid number\n");
}
else{
printf("not valid number\n");
}

regfree(&preg);

return 0;
}

当我运行它时,它返回“无效数字”。

这是一个更大程序的一部分,我刚刚提取了正则表达式部分以简化我的问题。

最佳答案

阅读regcomp(3) & regex(7)手册页。您需要 REG_EXTENDED 标志,因为您在正则表达式中使用了 ?

int errcode = regcomp(&preg, "[0-9]+(\\.[0-9]+)?", REG_EXTENDED);
if (errcode) {
char errmsg[80];
memset (errmsg, 0, sizeof(errmsg));
regerror(errcode, &preg, errmsg, sizeof(errmsg));
fprintf(stderr, "regexp failure: %s\n", errmsg);
exit(EXIT_FAILURE);
}

但是对于您的特定测试strtod(3)可能就足够了(它给出了数字和结束指针,因此请检查结束指针是否指向终止空字节)。

关于c - 如何在 C 中用 regexec 匹配一个数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22887037/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com