Oniguruma 快速上手5分钟构建你的第一个正则表达式程序【免费下载链接】onigurumaregular expression library项目地址: https://gitcode.com/gh_mirrors/on/onigurumaOniguruma 是一款功能强大的正则表达式库它支持多种正则语法和编码格式广泛应用于文本处理、代码解析等场景。本文将带你快速掌握 Oniguruma 的核心使用方法通过实际示例演示如何在5分钟内构建一个简单的正则表达式匹配程序。 准备工作获取 Oniguruma 源码首先需要获取 Oniguruma 项目源码执行以下命令克隆仓库git clone https://gitcode.com/gh_mirrors/on/oniguruma 核心步骤构建你的第一个正则程序1. 包含头文件使用 Oniguruma 库的第一步是在代码中包含其核心头文件#include stdio.h #include string.h #include oniguruma.h头文件oniguruma.h定义了库的所有核心函数和数据结构位于项目根目录的src文件夹中。2. 初始化正则环境在使用任何 Oniguruma 函数前需要初始化编码环境OnigEncoding use_encs[1]; use_encs[0] ONIG_ENCODING_ASCII; onig_initialize(use_encs, sizeof(use_encs)/sizeof(use_encs[0]));这段代码设置了使用 ASCII 编码你也可以根据需要选择 UTF-8、UTF-16 等其他编码。3. 编译正则表达式使用onig_new()函数编译正则表达式模式regex_t* reg; OnigErrorInfo einfo; UChar* pattern (UChar* )a(.*)b|[e-f]; int r onig_new(reg, pattern, pattern strlen((char* )pattern), ONIG_OPTION_DEFAULT, ONIG_ENCODING_ASCII, ONIG_SYNTAX_DEFAULT, einfo);这里我们编译了一个匹配 a(任意字符)b 或 e-f重复出现 的正则模式。4. 执行正则匹配使用onig_search()函数在目标字符串中执行匹配OnigRegion *region onig_region_new(); UChar* str (UChar* )zzzzaffffffffb; int r onig_search(reg, str, str strlen((char* )str), str, str strlen((char* )str), region, ONIG_OPTION_NONE);OnigRegion结构体用于存储匹配结果包括匹配位置和捕获组信息。5. 处理匹配结果检查匹配结果并输出if (r 0) { fprintf(stderr, match at %d\n, r); for (int i 0; i region-num_regs; i) { fprintf(stderr, Group %d: (%d-%d)\n, i, region-beg[i], region-end[i]); } } else if (r ONIG_MISMATCH) { fprintf(stderr, search fail\n); }6. 释放资源使用完毕后释放分配的内存onig_region_free(region, 1); onig_free(reg); onig_end(); 完整示例代码完整的示例代码可参考项目中的sample/simple.c文件该文件演示了最基础的正则匹配流程。核心代码结构如下#include stdio.h #include string.h #include oniguruma.h int main(int argc, char* argv[]) { int r; regex_t* reg; OnigErrorInfo einfo; OnigRegion *region; UChar* pattern (UChar* )a(.*)b|[e-f]; UChar* str (UChar* )zzzzaffffffffb; // 初始化编码 OnigEncoding use_encs[1]; use_encs[0] ONIG_ENCODING_ASCII; onig_initialize(use_encs, sizeof(use_encs)/sizeof(use_encs[0])); // 编译正则表达式 r onig_new(reg, pattern, pattern strlen((char* )pattern), ONIG_OPTION_DEFAULT, ONIG_ENCODING_ASCII, ONIG_SYNTAX_DEFAULT, einfo); if (r ! ONIG_NORMAL) { /* 错误处理 */ } // 执行匹配 region onig_region_new(); r onig_search(reg, str, str strlen((char* )str), str, str strlen((char* )str), region, ONIG_OPTION_NONE); // 处理结果 if (r 0) { /* 输出匹配信息 */ } else if (r ONIG_MISMATCH) { /* 处理不匹配情况 */ } // 释放资源 onig_region_free(region, 1); onig_free(reg); onig_end(); return 0; } 进阶学习资源官方文档项目中的doc文件夹包含完整的 API 文档和语法说明如 doc/API 和 doc/SYNTAX.md更多示例sample目录下提供了各种功能的示例代码包括回调匹配、编码转换等高级用法测试用例test目录下的测试程序展示了库的各种边界情况处理通过本文的介绍你已经掌握了 Oniguruma 的基本使用方法。这个轻量级但功能强大的正则库支持多种正则语法如 Ruby、Perl、Java 等能够满足复杂的文本处理需求。现在就开始尝试使用 Oniguruma 构建你的正则表达式应用吧【免费下载链接】onigurumaregular expression library项目地址: https://gitcode.com/gh_mirrors/on/oniguruma创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
Oniguruma 快速上手:5分钟构建你的第一个正则表达式程序
发布时间:2026/6/8 16:20:56
Oniguruma 快速上手5分钟构建你的第一个正则表达式程序【免费下载链接】onigurumaregular expression library项目地址: https://gitcode.com/gh_mirrors/on/onigurumaOniguruma 是一款功能强大的正则表达式库它支持多种正则语法和编码格式广泛应用于文本处理、代码解析等场景。本文将带你快速掌握 Oniguruma 的核心使用方法通过实际示例演示如何在5分钟内构建一个简单的正则表达式匹配程序。 准备工作获取 Oniguruma 源码首先需要获取 Oniguruma 项目源码执行以下命令克隆仓库git clone https://gitcode.com/gh_mirrors/on/oniguruma 核心步骤构建你的第一个正则程序1. 包含头文件使用 Oniguruma 库的第一步是在代码中包含其核心头文件#include stdio.h #include string.h #include oniguruma.h头文件oniguruma.h定义了库的所有核心函数和数据结构位于项目根目录的src文件夹中。2. 初始化正则环境在使用任何 Oniguruma 函数前需要初始化编码环境OnigEncoding use_encs[1]; use_encs[0] ONIG_ENCODING_ASCII; onig_initialize(use_encs, sizeof(use_encs)/sizeof(use_encs[0]));这段代码设置了使用 ASCII 编码你也可以根据需要选择 UTF-8、UTF-16 等其他编码。3. 编译正则表达式使用onig_new()函数编译正则表达式模式regex_t* reg; OnigErrorInfo einfo; UChar* pattern (UChar* )a(.*)b|[e-f]; int r onig_new(reg, pattern, pattern strlen((char* )pattern), ONIG_OPTION_DEFAULT, ONIG_ENCODING_ASCII, ONIG_SYNTAX_DEFAULT, einfo);这里我们编译了一个匹配 a(任意字符)b 或 e-f重复出现 的正则模式。4. 执行正则匹配使用onig_search()函数在目标字符串中执行匹配OnigRegion *region onig_region_new(); UChar* str (UChar* )zzzzaffffffffb; int r onig_search(reg, str, str strlen((char* )str), str, str strlen((char* )str), region, ONIG_OPTION_NONE);OnigRegion结构体用于存储匹配结果包括匹配位置和捕获组信息。5. 处理匹配结果检查匹配结果并输出if (r 0) { fprintf(stderr, match at %d\n, r); for (int i 0; i region-num_regs; i) { fprintf(stderr, Group %d: (%d-%d)\n, i, region-beg[i], region-end[i]); } } else if (r ONIG_MISMATCH) { fprintf(stderr, search fail\n); }6. 释放资源使用完毕后释放分配的内存onig_region_free(region, 1); onig_free(reg); onig_end(); 完整示例代码完整的示例代码可参考项目中的sample/simple.c文件该文件演示了最基础的正则匹配流程。核心代码结构如下#include stdio.h #include string.h #include oniguruma.h int main(int argc, char* argv[]) { int r; regex_t* reg; OnigErrorInfo einfo; OnigRegion *region; UChar* pattern (UChar* )a(.*)b|[e-f]; UChar* str (UChar* )zzzzaffffffffb; // 初始化编码 OnigEncoding use_encs[1]; use_encs[0] ONIG_ENCODING_ASCII; onig_initialize(use_encs, sizeof(use_encs)/sizeof(use_encs[0])); // 编译正则表达式 r onig_new(reg, pattern, pattern strlen((char* )pattern), ONIG_OPTION_DEFAULT, ONIG_ENCODING_ASCII, ONIG_SYNTAX_DEFAULT, einfo); if (r ! ONIG_NORMAL) { /* 错误处理 */ } // 执行匹配 region onig_region_new(); r onig_search(reg, str, str strlen((char* )str), str, str strlen((char* )str), region, ONIG_OPTION_NONE); // 处理结果 if (r 0) { /* 输出匹配信息 */ } else if (r ONIG_MISMATCH) { /* 处理不匹配情况 */ } // 释放资源 onig_region_free(region, 1); onig_free(reg); onig_end(); return 0; } 进阶学习资源官方文档项目中的doc文件夹包含完整的 API 文档和语法说明如 doc/API 和 doc/SYNTAX.md更多示例sample目录下提供了各种功能的示例代码包括回调匹配、编码转换等高级用法测试用例test目录下的测试程序展示了库的各种边界情况处理通过本文的介绍你已经掌握了 Oniguruma 的基本使用方法。这个轻量级但功能强大的正则库支持多种正则语法如 Ruby、Perl、Java 等能够满足复杂的文本处理需求。现在就开始尝试使用 Oniguruma 构建你的正则表达式应用吧【免费下载链接】onigurumaregular expression library项目地址: https://gitcode.com/gh_mirrors/on/oniguruma创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考