下面是使用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函数来执行正则表达式匹配,如果匹配失败,则根据错误代码打印相应的错误信息。如果匹配成功,则打印字符串符合正则表达式的信息,并释放正则表达式对象。
|