https://github.com/kkos/oniguruma
Oniguruma 是一个现代且灵活的正则表达式库。它包含传统上存在于不同语言中的不同正则表达式实现的功能。
可以为每个正则表达式对象指定字符编码。
支持的字符编码:
ASCII、UTF-8、UTF-16BE、UTF-16LE、UTF-32BE、UTF-32LE、EUC-JP、EUC-TW、EUC-KR、EUC-CN、Shift_JIS、Big5、GB18030、KOI8-R、CP1251、 ISO-8859-1、ISO-8859-2、ISO-8859-3、 ISO-8859-4、ISO-8859-5、ISO-8859-6、ISO-8859-7、ISO-8859-8、ISO-8859-9、ISO-8859-10、ISO-8859-11、ISO- 8859-13、ISO-8859-14、ISO-8859-15、ISO-8859-16
使用配置脚本时,如果您在早期版本中启用了 POSIX API(在 6.9.5 中默认禁用)并且需要应用程序与 POSIX API 的二进制兼容性,请指定“--enable-binary-兼容-posix-api=是”而不是“--enable-posix-api=yes”。从 6.9.6 开始,“--enable-posix-api=yes”仅支持 6.9.5 及更早版本有关 POSIX API 的源代码级兼容性。 (问题#210)
BSD 许可证。
dnf install oniguruma-devel
yum install oniguruma
apt install libonig5
pacman -S oniguruma
zypper install oniguruma
autoreconf -vfi(* 情况:未找到配置脚本。)
./配置
制作
进行安装
卸载
进行卸载
配置检查
onig-config --cflags onig-config --libs onig-config --prefix onig-config --exec-prefix
建立图书馆
.make_win.bat
onig_s.lib:静态链接库 onig.dll:动态链接库
制作测试程序
.make_win.bat 全测试
或者,您可以使用 vcpkg 依赖项管理器构建并安装 oniguruma:
vcpkg 中的 oniguruma 端口由 Microsoft 团队成员和社区贡献者保持最新。如果版本已过时,请在 vcpkg 存储库上创建问题或拉取请求。
对于日语,请参阅 doc/RE 或 doc/RE.ja。
在您的程序中包含 oniguruma.h。 (Oniguruma API)请参阅文档/API 了解 Oniguruma API。
如果要禁用 oniguruma.h 中的 UChar 类型(== unsigned char)定义,请定义 ONIG_ESCAPE_UCHAR_COLLISION,然后包含 oniguruma.h。
如果要在 oniguruma.h 中禁用 regex_t 类型定义,请定义 ONIG_ESCAPE_REGEX_T_COLLISION,然后包含 oniguruma.h。
Unix 或 Cygwin 中编译/链接命令行的示例,(前缀 == /usr/local 大小写)
cc sample.c -L/usr/local/lib -lonig
如果你想在Win32中使用静态链接库(onig_s.lib),请在C编译器中添加选项-DONIG_EXTERN=extern。
文件 | 描述 |
---|---|
样本/callout.c | 标注示例 |
样本/计数.c | 内置标注示例 *COUNT |
样本/echo.c | 用户定义的名称标注示例 |
样本/编码.c | 一些编码的示例 |
样本/listcap.c | 捕获历史记录示例 |
样本/名称.c | 命名组回调的示例 |
样本/posix.c | POSIX API 示例 |
样本/regset.c | 使用 RegSet API 的示例 |
样本/扫描.c | 使用 onig_scan() 的示例 |
样本/简单.c | 最小值示例(Oniguruma API) |
示例/sql.c | 变量元字符的示例 |
样本/user_property.c | 用户定义的 Unicode 属性示例 |
测试程序
文件 | 描述 |
---|---|
示例/语法.c | Perl、Java 和 ASIS 语法测试。 |
样本/crnl.c | --enable-crnl-as-line-terminator 测试 |
文件 | 描述 |
---|---|
鬼古鲁玛.h | Oniguruma API 头文件(公共) |
onig-config.in | 配置检查程序模板 |
摄政.h | 字符编码框架头文件 |
regint.h | 内部定义 |
regparse.h | regparse.c 和 regcomp.c 的内部定义 |
regcomp.c | 编译和优化功能 |
摄政.c | 字符编码框架 |
regerror.c | 错误信息功能 |
正则表达式 | 扩展API功能(豪华版API) |
正则执行程序 | 搜索和匹配功能 |
regparse.c | 解析函数。 |
regsyntax.c | 模式语法函数和内置语法定义 |
regtrav.c | 捕获历史树数据遍历函数 |
regversion.c | 版本信息功能 |
圣赫 | 哈希表函数头文件 |
不锈钢 | 哈希表函数 |
奥尼格努.h | GNU 正则表达式 API 头文件(公共) |
雷格努.c | GNU 正则表达式 API 函数 |
onigposix.h | POSIX API 头文件(公共) |
regposrr.c | POSIX 错误消息函数 |
regposix.c | POSIX API 函数 |
mktable.c | 字符类型表生成器 |
ASCII码 | ASCII 编码 |
euc_jp.c | EUC-JP 编码 |
euc_tw.c | EUC-TW 编码 |
euc_kr.c | EUC-KR、EUC-CN 编码 |
sjis.c | Shift_JIS 编码 |
big5.c | Big5编码 |
GB18030.c | GB18030编码 |
锦鲤8.c | KOI8编码 |
锦鲤8_r.c | KOI8-R编码 |
cp1251.c | CP1251编码 |
iso8859_1.c | ISO-8859-1(Latin-1) |
iso8859_2.c | ISO-8859-2(拉丁语2) |
iso8859_3.c | ISO-8859-3(拉丁语 3) |
iso8859_4.c | ISO-8859-4(拉丁语 4) |
iso8859_5.c | ISO-8859-5(西里尔字母) |
iso8859_6.c | ISO-8859-6(阿拉伯语) |
iso8859_7.c | ISO-8859-7(希腊语) |
iso8859_8.c | ISO-8859-8(希伯来语) |
iso8859_9.c | ISO-8859-9(Latin-5 或土耳其语) |
iso8859_10.c | ISO-8859-10(Latin-6 或 Nordic) |
iso8859_11.c | ISO-8859-11(泰语) |
iso8859_13.c | ISO-8859-13(Latin-7 或波罗的海沿岸) |
iso8859_14.c | ISO-8859-14(Latin-8 或凯尔特语) |
iso8859_15.c | ISO-8859-15(拉丁 9 或西欧与欧元) |
iso8859_16.c | ISO-8859-16(Latin-10) |
utf8.c | UTF-8编码 |
utf16_be.c | UTF-16BE 编码 |
utf16_le.c | UTF-16LE编码 |
utf32_be.c | UTF-32BE 编码 |
utf32_le.c | UTF-32LE 编码 |
统一码.c | Unicode编码的常用代码 |
unicode_fold_data.c | Unicode 折叠数据 |
窗口/testc.c | Windows 测试程序(VC++) |