2

我正在尝试在 C 中使用 POSIX 正则表达式,但它不起作用。这是我的代码:

int regi(char *c, char *e)
{
    regex_t regex;
    int reti = regcomp(&regex, e, 0);
    reti = regexec(&regex, c, 0, NULL, 0);

    if(!reti)
        return 1;

    return 0;
}

int main()
{
   char str[5] = {'0','x','2','F'};

   if(regi(str, "^(0[xX])[0-9a-fA-F]+"))
      // Do stuff

   return 0;
}

我在看这里:http ://www.peope.net/old/regex.html

这永远不会进入 if 语句。

4

2 回答 2

5

为了使用+元字符,您需要告诉regcomp()您正在使用扩展的 POSIX 语法

int reti = regcomp(&regex, e, REG_EXTENDED);

但是,此代码还有其他几个问题,包括强制转换const char*char*,并忽略regcomp().

于 2015-09-19T05:24:17.540 回答
3

我从来没有完全掌握正则表达式的不同风格,但我似乎基本的正则表达式不知道限定符+,只有*.

一种解决方案是使用扩展的正则表达式。您必须在编写正则表达式时指定:

reti = regcomp(&regex, e, REG_EXTENDED);

(我认为+可以"\\{1,\\}"在基本的正则表达式中进行模拟,但这不起作用。)

于 2015-09-19T05:24:09.613 回答