写一个正则通配linux下文件的绝对路径使用C语言regcmp
在Linux下,可以使用C语言的正则表达式库regex.h来进行正则匹配。regex.h库提供了regcomp()函数来进行正则表达式的编译,regexec()函数来进行匹配。
下面是一个示例代码,使用regcomp()函数编译正则表达式,然后使用regexec()函数进行匹配。
#include <stdio.h>
#include <regex.h>
int main() {
regex_t regex;
int reti;
char filepath[] = "/home/user/example.txt";
char pattern[] = "^/.*$"; // 匹配以/开头的绝对路径
// 编译正则表达式
reti = regcomp(®ex, pattern, 0);
if (reti) {
fprintf(stderr, "Could not compile regex\n");
return 1;
}
// 进行匹配
reti = regexec(®ex, filepath, 0, NULL, 0);
if (!reti) {
printf("Match\n");
} else if (reti == REG_NOMATCH) {
printf("No match\n");
} else {
char error_message[100];
regerror(reti, ®ex, error_message, sizeof(error_message));
fprintf(stderr, "Regex match failed: %s\n", error_message);
return 1;
}
// 释放正则表达式资源
regfree(®ex);
return 0;
}
上述代码中,正则表达式^/.*$用来匹配以/开头的绝对路径,regcomp()函数将该正则表达式编译为regex对象,然后使用regexec()函数进行匹配,匹配成功输出Match,匹配失败输出No match。
注意,这里的正则表达式使用的是基础的POSIX正则表达式语法,不同的正则表达式语法可能有所差异
原文地址: https://www.cveoy.top/t/topic/idci 著作权归作者所有。请勿转载和采集!