#safe-wrapper #regex #bindings #unsafe-bindings #set #oniguruma #onig

sys onig_sys

onig_sys 包含了对 oniguruma 库的原始 Rust 绑定。此包暴露了一组不安全函数,然后可以被其他包用于创建围绕 Oniguruma 的安全包装。你可能不想直接链接到这个包;相反,查看 onig 包。

42 个版本 (稳定)

69.8.1 2022年8月9日
69.8.0 2022年7月2日
69.7.1 2021年10月2日
69.7.0 2021年6月9日
0.6.0 2016年1月31日

444文本处理 中排名

Download history 64934/week @ 2024-03-14 66969/week @ 2024-03-21 65217/week @ 2024-03-28 70396/week @ 2024-04-04 70721/week @ 2024-04-11 74026/week @ 2024-04-18 75856/week @ 2024-04-25 80627/week @ 2024-05-02 69976/week @ 2024-05-09 86908/week @ 2024-05-16 82153/week @ 2024-05-23 91610/week @ 2024-05-30 88546/week @ 2024-06-06 95639/week @ 2024-06-13 93042/week @ 2024-06-20 81035/week @ 2024-06-27

376,036 每月下载量
240 个包中使用(通过 onig

MIT 许可证

2.5MB
88K SLoC

C 84K SLoC // 0.0% comments Rust 1.5K SLoC // 0.0% comments Python 1.5K SLoC // 0.1% comments Automake 236 SLoC // 0.0% comments Shell 63 SLoC // 0.1% comments C++ 21 SLoC // 0.5% comments Batch 15 SLoC

包含 (神秘的自动配置代码,3KB) oniguruma/configure.ac

Rust Onig

Cargo Documentation CI Build status dependency status

Rust 对 Oniguruma 正则表达式库 的绑定,这是一个功能强大且成熟的正则表达式库,支持广泛的字符集和语言语法。Oniguruma 使用 C 语言编写。此存储库提供两个包:提供原始 Rust FFI 绑定的 onig-sys 和提供它们的安全 Rust 包装的 onig

文档

查看 模块文档 以获取所有可用的功能信息。要查看此包的示例用法,请查看 示例文件夹。示例可以通过以下命令行运行: cargo run --example <examplename>

入门指南

将以下内容添加到您的 Cargo.toml 文件中

[dependencies]
onig = "6"

如果您的版本不是 2018,请将以下 extern 添加到您的包根目录中

extern crate onig;

您可以使用 Regex::new 编译简单的正则表达式,使用 Regex::is_match 检查模式是否匹配整个 &str,使用 Regex::find&str 中查找匹配项。`onig` 包还提供了这些方法的更强大版本,这些版本可以公开 Oniguruma 提供的广泛选项。

use onig::*;

let regex = Regex::new("e(l+)").unwrap();
for (i, pos) in regex.captures("hello").unwrap().iter_pos().enumerate() {
    match pos {
         Some((beg, end)) =>
             println!("Group {} captured in position {}:{}", i, beg, end),
         None =>
             println!("Group {} is not captured", i)
    }
}

链接

如果可以通过 pkg-config 找到 Oniguruma 的版本,则将使用该版本。如果没有,则将从头编译 Oniguruma 并将其链接到 onig-sys 包。

默认情况下,`rust-onig` 将与 libonig 静态链接。如果您希望使用动态链接,则可以在 Unix 上设置环境变量 RUSTONIG_STATIC_LIBONIGRUSTONIG_DYNAMIC_LIBONIG

$ RUSTONIG_DYNAMIC_LIBONIG=1 cargo build

或者 Windows

> set RUSTONIG_DYNAMIC_LIBONIG=1
> cargo build

由 libclang/llvm 引起的构建错误

默认情况下,`onig` 使用 bindgen 生成对 libonig 的绑定。如果您计划只使用捆绑的 libonig 版本,则可以通过禁用默认的 generate 功能来使编译更快、更可靠。

[dependencies]
onig = { version = "6", default-features = false }

调试

有时调试 Oniguruma 如何解析、编译、优化或执行特定模式很有用。

当为此包激活 print-debug 功能时,Oniguruma 将带有调试信息进行编译。请注意,这是一个编译时设置,因此您还需要使用 RUSTONIG_SYSTEM_LIBONIG 确保不使用系统 Oniguruma。

结合所有这些,以下是一个用于调试模式 a|b 的示例命令

RUSTONIG_SYSTEM_LIBONIG=0 cargo run --features print-debug --example capturedump 'a|b'

支持的 Rust 版本

Rust Onig 支持 Rust 1.50.0 或更高版本,适用于 Windows、Linux 和 macOS。如果最低支持的 Rust 版本 (MSRV) 发生变化,则次要版本号将增加。这意味着 v6.4.x 应始终使用相同的编译器版本进行编译。

Rust-Onig 是开源的

此存储库的内容根据 MIT 许可证分发。有关详细信息,请参阅 LICENSE。如果您想贡献力量,请查看我们的开源 简单问题

依赖关系