我试图用正则表达式来检查字符串是否是整数。我认为模式应该是^\d$并且我编写了一个函数,如果参数不合适,将打印一个错误:

 regex_t regex;
 void check_int(char *c)
 {
     check=regcomp(&regex,"^\d$",0);
     if (check!=0)
     {
         perror("4th element on the line is not an integer!");
         exit(5);
     }
     else printf("4th arg is a number.");
 }

我不确定regcomp是如何工作的,我在网上查看了一些例子后,按自己的想法使用了它。
问题是它总是说我的字符串是一个数字,不知道为什么。。。
添加此项后,现在始终不返回匹配项:
status = regexec(&regex, c, (size_t) 0, NULL, 0);
refree(&regex);
if(status!=0)
{
    perror("..");
    exit(5);
}

最佳答案

regcomp用于编译正则表达式模式,而不是将其与输入字符串匹配。要与字符串匹配,需要使用regexec。在这种情况下,regcomp的返回值始终为零,因为模式似乎编译无误。
参见this link每个不同功能的概要和用法示例。

10-06 11:14