使用 fgets() 函数按行读取文件。
使用正则表达式库 regex.h 中的 regcomp() 和 regexec() 函数进行模式匹配。
下面是一个示例代码:
#include
#include
int main() {
FILE *fp;
char line[100];
regex_t regex;
int reti;
/* Compile regular expression */
reti = regcomp(®ex, "^\\d+\\s+[A-Za-z]+", 0);
if (reti) {
fprintf(stderr, "Could not compile regex\n");
return 1;
}
/* Open file */
fp = fopen("file.txt", "r");
if (fp == NULL) {
perror("Error opening file");
return 1;
}
/* Read file line by line and match pattern */
while (fgets(line, 100, fp) != NULL) {
/* Execute regular expression */
reti = regexec(®ex, line, 0, NULL, 0);
if (!reti) {
printf("Matched: %s", line);
} else if (reti == REG_NOMATCH) {
printf("No match: %s", line);
} else {
regerror(reti, ®ex, line, sizeof(line));
fprintf(stderr, "Regex match failed: %s\n", line);
return 1;
}
}
/* Free compiled regular expression */
regfree(®ex);
/* Close file */
fclose(fp);
return 0;
}
这段代码可以从名为 "file.txt" 的文件中读取每一行,然后使用正则表达式"^\d+\s+[A-Za-z]+"进行匹配。如果匹配成功,则输出该行。上述正则表达式匹配的是一个或多个数字,一个或多个空格,一个或多个字母的字符串。在实际应用中,请根据需求自行修改正则表达式。