下面是使用PCRE库在C语言中实现正则表达式匹配的示例代码:
#include <stdio.h>
#include <string.h>
#include <pcre.h>
int main() {
char *pattern = "^\\w+@[a-zA-Z_]+?\\.[a-zA-Z]{2,3}$"; // 正则表达式
char *string = "example@mail.com"; // 待匹配的字符串
pcre *re; // 正则表达式对象
const char *error;
int erroffset;
int ovector[30]; // 匹配结果的偏移量
int rc;
re = pcre_compile(pattern, 0, &error, &erroffset, NULL); // 编译正则表达式
if (re == NULL) {
printf("编译正则表达式失败:%s\n", error);
return 1;
}
rc = pcre_exec(re, NULL, string, strlen(string), 0, 0, ovector, 30); // 执行正则表达式匹配
if (rc < 0) {
switch (rc) {
case PCRE_ERROR_NOMATCH:
printf("字符串不符合正则表达式\n");
break;
default:
printf("正则表达式匹配失败:%d\n", rc);
break;
}
pcre_free(re);
return 1;
}
printf("字符串符合正则表达式\n");
pcre_free(re);
return 0;
}
在这个示例中,我们使用PCRE库实现了一个简单的邮箱格式验证,使用了一个正则表达式来匹配邮箱格式。在主函数中,我们先定义了一个正则表达式对象re,然后调用pcre_compile函数来编译正则表达式,如果编译失败,则打印错误信息并退出程序。接着,我们调用pcre_exec函数来执行正则表达式匹配,如果匹配失败,则根据错误代码打印相应的错误信息。如果匹配成功,则打印字符串符合正则表达式的信息,并释放正则表达式对象。 |