// include the latest version of the regex crate in your Cargo.toml
extern crate regex;
use regex::Regex;
fn main() {
let regex = Regex::new(r"(?m)(?m)^# /// (?P<type>[a-zA-Z0-9-]+)$\s(?P<content>(^#(| .*)$\s)+)^# ///$
").unwrap();
let string = "# /// pyproject
# [run]
# dependencies = [\"requests<3\"]
# ///
#
# This data is still being read
# if someone has accidentally bridged
# two metadata blocks without a blank
# line or other data between them this
# will be included.
#
# /// pyproject
# You might expect this to be a second
# pyproject block and cause an error but
# instead it will be picked up by the regex
# all as one block.
# ///
";
// result will be an iterator over tuples containing the start and end indices for each match in the string
let result = regex.captures_iter(string);
for mat in result {
println!("{:?}", mat);
}
}
Please keep in mind that these code samples are automatically generated and are not guaranteed to work. If you find any syntax errors, feel free to submit a bug report. For a full regex reference for Rust, please visit: https://docs.rs/regex/latest/regex/