c/c++有没有像python那样使用的正则库?

之前使用python的时候用正则匹配字符
比如key:45679,key:7989,key:8797,key:13132,
这段字符串混杂在一个很大的字符串里面。
在py里我是patternPinId=re.compile('key:(.*?),')
这样就能得到返回的45679,7989,8797,13132

然后我昨天试了c/c++的一些正则
像上面的字符串按正则"key:(.*?)," 匹配之后 返回的是四组这样的数据key:45679,

那么c/c++有像python那种返回括号中匹配到的字符的正则用法吗?

阅读 3.7k
5 个回答

GNU Regex Library
Boost.Regex
C++11 內建 regex

有啊,C和C++都行

include <regex.h>

include <sys/types.h>

可以
$ man regexec

C++11标准库自带regex。用起来感觉和Python差不多。
单纯看正则的话,Perl是最舒服的。

data.txt

key:45679,key:7989,key:8797,key:13132,
#include<stdio.h>

int main(int argc, char *argv[]) {    
    int a,b,c,d;
    FILE* fp = fopen("data.txt", "r");

    while (fscanf(fp, "key:%d,key:%d,key:%d,key:%d,", &a,&b,&c,&d) != EOF) {
        printf("data:%d, %d, %d, %d\n", a,b,c,d);
    }
    return 0;
}

结果:

data:45679, 7989, 8797, 13132
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题