我试图用正则表达式来检查字符串是否是整数。我认为模式应该是^\d$
并且我编写了一个函数,如果参数不合适,将打印一个错误:
regex_t regex;
void check_int(char *c)
{
check=regcomp(®ex,"^\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(®ex, c, (size_t) 0, NULL, 0);
refree(®ex);
if(status!=0)
{
perror("..");
exit(5);
}
最佳答案
regcomp
用于编译正则表达式模式,而不是将其与输入字符串匹配。要与字符串匹配,需要使用regexec
。在这种情况下,regcomp
的返回值始终为零,因为模式似乎编译无误。
参见this link每个不同功能的概要和用法示例。