// 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)^(?:(?:[Ss]ub)?(?:-)?(?:paragraph)?(?:s)?(?:\s*\([a-z]\))(?:,\s*(?:\s*\([a-z]\))?)*(?:\s*(?:[,&]|and)\s+?(?:\s*\([a-z]\)+)?)?(?:(?:\s*to)*(?:\s*\([a-z]\)))*(?:\s*of\s*)*)").unwrap();
let string = "Sub-Clause 9.12
subparagraphs (a), (b) and (c) of Sub-Clause 4.8
Clause 13
paragraph (b) of Sub-Clause 9.3
SubClauses 9.8, 9.9 and 9.10
sub-paragraph (b) of Sub-Clause 12.1
Sub-Clauses 17.1(b)(ii) and 17.3(b)(ii)
sub-paragraphs (a) to (e) of Sub-Clause 18.1
Sub-Clause 20.1(d)
";
// 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/