A macro to parse simple inputs using regular expressions
cargo add --git https://github.com/Inky-developer/regex-parse regex-parseuse regex_parse::re_parse;
fn main() {
let input = "2024-12-15";
let year: u32;
let month: u32;
let day: u32;
re_parse!("{year}\\-{month}\\-{day}", input);
assert_eq!(year, 2024);
assert_eq!(month, 12);
assert_eq!(day, 15);
}use regex_parse::re_parse;
fn main() {
let inputs = ["1 2 3 4", "-5 6 -7"];
let parsed_inputs = inputs.map(|input| {
let numbers: Vec<i32>;
re_parse!(r"({numbers*}\s*)*", input);
numbers
});
assert_eq!(parsed_inputs, [vec![1, 2, 3, 4], vec![-5, 6, -7]]);
}- literal text:
abcdef - variables:
abc{var}def - or:
a|b - parenthesis:
(ab)|(cd) - any character in group:
[abc] - any character in range:
[a-z] - any character not in group:
[^abc] - any character:
. - any whitespace:
\s - any digit:
\d - any word:
\w - zero or one:
a? - zero or more:
a* - one or more:
a+ - exactly n:
a{3} - n or more:
a{3,} - between n and m:
a{3,6}