5 个版本
使用旧的 Rust 2015
0.2.3 | 2023年3月7日 |
---|---|
0.2.2 | 2023年3月7日 |
0.2.1 | 2019年8月27日 |
0.2.0 | 2017年5月31日 |
0.1.0 | 2017年5月30日 |
#544 in 文本处理
1,457 个月下载量
在 4 crates 中使用
17KB
345 行
regex_generate
使用正则表达式生成文本。这个 crate 非常新,且处于开发阶段。欢迎提出问题或 PR,或用于您自己的想法,如果您对此感兴趣。不提供任何保证或保修,使用此代码风险自担。
感谢 rust-lang/regex 项目团队,这是本 crate 的核心。使用 regex_syntax 使得本 crate 的开发变得容易 1000 倍。
文档
由 Docs.rs 自动生成并提供托管。
目前的文档质量不高。
用法
将此添加到您的 Cargo.toml
[dependencies]
regex_generate = "0.2"
并将此添加到您的 crate 根目录
extern crate regex_generate;
此示例生成一个 YYYY-MM-DD 格式的日期并打印出来。改编自 rust-lang/regex 的示例。
extern crate regex_generate;
extern crate rand;
use regex_generate::{DEFAULT_MAX_REPEAT, Generator};
fn main() {
let mut gen = Generator::new(r"(?x)
(?P<year>[0-9]{4}) # the year
-
(?P<month>[0-9]{2}) # the month
-
(?P<day>[0-9]{2}) # the day
", rand::thread_rng(), DEFAULT_MAX_REPEAT).unwrap();
let mut buffer = vec![];
gen.generate(&mut buffer).unwrap();
let output = String::from_utf8(buffer).unwrap();
println!("Random Date: {}", output);
}
测试
使用 cargo test -- --nocapture
运行测试
基准测试
使用 rustup run nightly cargo bench
运行基准测试
技巧
- 在您的字符类中明确指定,否则您将得到意外结果。
.
真正意味着 任何,例如任何有效的 Unicode 字符。- 同样,
\d
意味着 任何 数字,而不仅仅是[0-9]
。 - 默认的最大重复次数(如
.*
)是 100,但您可以使用generate_with_max_repeat
自定义设置。
待办事项
- 添加直接生成完整字符串的便利方法
- 实现 Iter 以生成大量字符串?
- 为 regex bytes 功能添加测试
- 在
Literal
中考虑不区分大小写 - 对组编号或名称做些什么?(语法中没有后向引用,所以可能无法做任何事情。)
许可证
regex_generate 主要在 MIT 许可证和 Apache 许可证(版本 2.0)的条款下分发,部分内容受各种类似 BSD 许可证的覆盖。
有关详细信息,请参阅 LICENSE-APACHE 和 LICENSE-MIT。
依赖项
~5.5MB
~127K SLoC