使用正则表达式在C linux中查找一系列数字

时间:2014-01-16 05:02:14

标签: c regex

我使用下面的代码使用了“{}”但似乎在使用C时没有按预期工作。

int basic_regx(char *format, char *name)
{
     regex_t     regex;
     char        array[100];
     if( regcomp(&regex, format, 0) )
         return; 
     if( !regexec(&regex, name, 0, NULL, 0) )
         printf ("Succeeded\n");
     else 
         printf ("Not Succeeded\n");
     regfree(&regex);    
 }

如果我通过以下方式调用函数:

Success - basic_regx("^[0-9]$","0");
Not Success -- basic_regx("^[0-9]{1,4}$","0");
Success - basic_regx("^[0-9]{1,4}$","0{1,4}");

这意味着注册实施不会按预期采用{}。

1 个答案:

答案 0 :(得分:2)

regcompregexec使用POSIX正则表达式;换句话说,它只支持POSIX中描述的功能。如果您需要支持此表达式的Perl样式正则表达式,则可能需要一个外部库,例如PCRE

但是,使用POSIX正则表达式,您可以执行等效的操作:

basic_regx("^[0-9]\\{1,4\\}$","0");