我正在开发一个涉及正则表达式的项目。这是我的代码(在C中):
#include <stdio.h>
#include <regex.h>
#include <stdlib.h>
int main(int argc, const char * argv[])
{
regex_t regex;
int reti;
char msgbuf[100];
/* Compile regular expression */
reti = regcomp(®ex, "[0-9]+", 0);
/* Execute regular expression */
reti = regexec(®ex, "3", 0, NULL, 0);
if( !reti ){
puts("Match");
}
else if( reti == REG_NOMATCH ){
puts("No match");
}
else{
regerror(reti, ®ex, msgbuf, sizeof(msgbuf));
fprintf(stderr, "Regex match failed: %s\n", msgbuf);
exit(1);
}
regfree(®ex);
return 0;
}
我试图将它与各种正则表达式一起使用,但大多数都没有用。例如,正则表达式\d
无效,因此我必须使用[0-9]
。 +
正则表达式也不起作用,我需要它,因为我必须匹配一个或多个数字。
我使用的是Mac OS X,如果有人可以提供帮助请。提前谢谢。
答案 0 :(得分:3)
+
修饰符不适用于BRE which is the default。将cflags
设置为REG_EXTENDED
。
reti = regcomp(®ex, "[0-9]+", REG_EXTENDED);
此外,您可以使用字符类[:digit:]
来匹配数字。 <{1}}未由POSIX定义,不起作用。
\d