我想打印匹配“字节”的子表达式。我已经简化了这个例子,所以我可以调试我的代码的其他组件:
char *bytes="[[:print:]]*\(bytes\)";
regex_t compiled;
regmatch_t matches[2];
char currentLine[512];
fgets(currentLine, 512, ifile);
regcomp(&compiled, bytes, REG_EXTENDED);
if(regexec(&compiled, currentLine, 2, matches, 0)==0){
printf("%s\n", bytes+matches[1].rm_so);
}
在哪里
currentLine= "Free Memory: 5062026704 bytes (79%)";'
发生在 fgets 之后。
我收到的打印行是来自另一个函数的未格式化的 printf 语句——它在这个函数之后运行。对于我的问题可能出在哪里(正则表达式语法、内存分配、regmatch_t 的使用),我有一些不同的想法,而且我整个早上都在尝试不同的解决方案组合,但至今无济于事。
如何正确打印匹配的子字符串?