正则表达式从C中的字符串扫描整数和字符串

时间:2016-02-05 23:45:57

标签: c regex string scanf

我有一个如下所示的字符串:{opt,2}{home,4}...我必须将opt和2扫描成字符串和整数。我这样做:

char str[40] = "{opt,2}{home,4}";
char s[20];
int *x;
sscanf(str, "{%[^,],%[0-9]}", s,&x);

这段错误。什么是正确的方法?

1 个答案:

答案 0 :(得分:2)

要扫描这样的文字,你不需要正则表达式,你可以使用简单的scanf说明符。

char s[16];   /* The string in the pair */
int n;        /* The integer in the pair */
int len;      /* The length of the pair */

for (; sscanf(buf, "{%[^,],%d}%n", s, &n, &len) == 2; buf += len) {
    /* use str and n */
}

%n说明符只接收sscanf调用中读取的字符数,并将其存储在匹配参数中(在本例中为len)。我们使用这个值,以便我们可以递增正在读取的buf,以便可以读取下一个string-int对。