我在C语言中使用正则表达式。我有以下代码:
#include <regex.h>
static char input[] = "00001415_AXI_7_16";
static bool checkSn(char *input)
{
regex_t regex;
if (regcomp(®ex, "^\\d{1,8}_[A-Z]{3}_(\\*|\\d{1,3})_(\\*|\\d{1,3})$",
REG_EXTENDED))
{
fprintf(stderr, "Error during creating regex\n");
return false;
}
if (regexec(®ex, input, 0, NULL, 0))
{
return false;
}
return true;
}
我可以在没有任何警告的情况下编译程序。我可以运行这个程序,但是即使输入字符串匹配正则表达式,函数也会返回false,我显然在一个在线正则表达式测试器上试过。请问哪里出错了?先谢谢你。
我尝试了regcomp函数的几个标志。我尝试了不带“^”和不带“$”的正则表达式,结果都是一样的。
1条答案
按热度按时间sd2nnvve1#
使用
REG_EXTENDED
标志编译。但是,当前使用的正则表达式是基本正则表达式语法。您可以更改正则表达式以使用扩展语法,也可以从regcomp函数调用中删除
REG_EXTENDED
标志。扩展版本:
或不包括: