#regex #character-encoding #bindings #regular #expression #syntaxes #oniguruma

onig

Rust-Onig是Oniguruma正则表达式库的一组Rust绑定。Oniguruma是一个支持多种字符编码和正则表达式语法的现代正则表达式库。

52个版本 (稳定)

6.4.0 2022年8月9日
6.3.2 2022年7月2日
6.3.1 2021年10月22日
6.2.0 2021年6月9日
0.4.0 2016年1月31日

#20 in 文本处理

Download history 64854/week @ 2024-03-14 66849/week @ 2024-03-21 65122/week @ 2024-03-28 70213/week @ 2024-04-04 70596/week @ 2024-04-11 73879/week @ 2024-04-18 75884/week @ 2024-04-25 80583/week @ 2024-05-02 69802/week @ 2024-05-09 86891/week @ 2024-05-16 82093/week @ 2024-05-23 91503/week @ 2024-05-30 88506/week @ 2024-06-06 95528/week @ 2024-06-13 92955/week @ 2024-06-20 81013/week @ 2024-06-27

375,732 每月下载量
237 个crates中使用(直接使用29个)

MIT 许可证

2.5MB
89K SLoC

C 84K SLoC // 0.0% comments Rust 3.5K SLoC // 0.0% comments Python 1.5K SLoC // 0.1% comments Automake 235 SLoC // 0.0% comments Shell 62 SLoC // 0.1% comments C++ 20 SLoC // 0.5% comments Batch 14 SLoC

Rust Onig

Cargo Documentation CI Build status dependency status

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

文档

查看模块文档以了解所有可用功能。要查看此crate的一些示例用法,请查看示例文件夹。这些示例可以从命令行运行,使用cargo run --example <examplename>

入门

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

[dependencies]
onig = "6"

如果您不使用2018版,请将以下extern添加到您的crate根目录中

extern crate onig;

您可以使用 Regex::new 编译简单的正则表达式,使用 Regex::is_match 检查模式是否匹配整个 &str,以及使用 Regex::find&str 中查找匹配项。onig crate 还提供了这些方法的更强大版本,这些版本公开了 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 crate。

默认情况下,rust-onig 将静态链接到 libonig。如果您希望使用动态链接,则可以在 *nix 系统上设置环境变量 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 如何解析、编译、优化或执行特定模式是有用的。

当为此 crate 激活 print-debug 功能时,Oniguruma 将带有调试信息进行编译。请注意,这是一个编译时设置,因此您还需要使用 RUSTONIG_SYSTEM_LIBONIG 使 rust-onig 不使用系统 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。如果您想做出贡献,请查看我们的开放 简单问题

依赖项