rand_regex

Crates.io Build status MIT License

Generates random strings and byte strings matching a regex.

Examples

```rust use rand::{SeedableRng, Rng};

let mut rng = randxorshift::XorShiftRng::fromseed(*b"The initial seed");

// creates a generator for sampling strings let gen = rand_regex::Regex::compile(r"\d{4}-\d{2}-\d{2}", 100).unwrap();

// sample a few strings randomly let samples = (&mut rng).sample_iter(&gen).take(3).collect::>();

// all Unicode characters are included when sampling asserteq!(samples, vec![ "꘥᥉১᪕-꧷៩-୦۱".tostring(), "𞋴۰𑋸꣕-᥆꧰-෮᪑".tostring(), "𑋲𐒥४౫-9႙-९౨".tostring() ]);

// you could use regex_syntax::Hir to include more options let mut parser = regexsyntax::ParserBuilder::new().unicode(false).build(); let hir = parser.parse(r"\d{4}-\d{2}-\d{2}").unwrap(); let gen = randregex::Regex::withhir(hir, 100).unwrap(); let samples = (&mut rng).sampleiter(&gen).take(3).collect::>(); asserteq!(samples, vec![ "8922-87-63".tostring(), "3149-18-88".tostring(), "5420-58-55".tostring(), ]); ```

Acknowledgement

rand_regex is heavily inspired by [regex_generate] and [proptest].