rand_regex

Crates.io Build Status MIT License

Generates random strings and byte strings matching a regex.

Examples

```rust extern crate randregex; extern crate regexsyntax; extern crate rand; use rand::{SeedableRng, Rng};

let mut rng = rand::prng::XorShiftRng::from_seed(*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 = rng.sample_iter(&gen).take(3).collect::>();

// all Unicode characters are included when sampling asserteq!(samples, vec![ "១५᥏꣒-૨٩-٨𑁩".tostring(), "႘꘦൩᥌-꧶߉-8၀".tostring(), "௨൫𑣦០-𖭔༡-෩༤".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 = rng.sampleiter(&gen).take(3).collect::>(); asserteq!(samples, vec![ "5786-30-81".tostring(), "4990-38-85".tostring(), "4514-20-35".tostring(), ]); ```

Acknowledgement

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