6个版本 (3个破坏性版本)
0.4.1 | 2024年3月15日 |
---|---|
0.4.0 | 2024年3月15日 |
0.3.0 | 2023年6月17日 |
0.2.1 | 2023年6月16日 |
0.1.1 | 2023年6月15日 |
在文本处理中排名第458
每月下载量173次
79KB
938 行
tre-regex
对TRE正则表达式引擎的安全API绑定。
文档可在docs.rs找到。
应适用于Rust 1.70.0及以上版本。如果您发现其他情况,请报告。
功能
wchar
: 启用wchar支持(绑定器尚未支持,但将在tre-regex-sys中启用)。默认启用。approx
: 启用近似匹配支持。默认启用。vendored
: 使用tre-regex-sys的TRE副本;否则使用系统TRE。默认启用。
lib.rs
:
这些是对tre_regex_sys
模块的安全绑定。
这些绑定旨在尽可能提供类似于Rust的API,以访问TRE库。除了TRE中的reguexec
之外,大部分TRE API都得到了支持;这很棘手实现,但自己使用起来应该相当简单。
此库使用Rust std::borrow::Cow
字符串来启用正则表达式匹配的零拷贝。
示例
提供了两种API:函数API和对象API。您可以选择使用哪种,尽管函数API作为对象API的薄包装实现。
对象API
use tre_regex::{RegcompFlags, RegexecFlags, Regex};
let regcomp_flags = RegcompFlags::new().add(RegcompFlags::EXTENDED);
let regexec_flags = RegexecFlags::new().add(RegexecFlags::NONE);
let compiled_reg = Regex::new("^([[:alnum:]]+)[[:space:]]*([[:alnum:]]+)$", regcomp_flags)?;
let matches = compiled_reg.regexec("hello world", 2, regexec_flags)?;
for (i, matched) in matches.into_iter().enumerate() {
match matched {
Some(res) => {
match res {
Ok(substr) => println!("Match {i}: '{}'", substr),
Err(e) => println!("Match {i}: <Error: {e}>"),
}
},
None => println!("Match {i}: <None>"),
}
}
函数API
use tre_regex::{RegcompFlags, RegexecFlags, regcomp, regexec};
let regcomp_flags = RegcompFlags::new().add(RegcompFlags::EXTENDED);
let regexec_flags = RegexecFlags::new().add(RegexecFlags::NONE);
let compiled_reg = regcomp("^([[:alnum:]]+)[[:space:]]*([[:alnum:]]+)$", regcomp_flags)?;
let matches = regexec(&compiled_reg, "hello world", 2, regexec_flags)?;
for (i, matched) in matches.into_iter().enumerate() {
match matched {
Some(res) => {
match res {
Ok(substr) => println!("Match {i}: '{}'", substr),
Err(e) => println!("Match {i}: <Error: {e}>"),
}
},
None => println!("Match {i}: <None>"),
}
}
依赖关系
~0.5–2.4MB
~50K SLoC