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 文本处理
375,732 每月下载量
在 237 个crates中使用(直接使用29个)
2.5MB
89K SLoC
Rust Onig
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_LIBONIG
和 RUSTONIG_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。如果您想做出贡献,请查看我们的开放 简单问题。