// 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)^file *"?([^" ]*)"[\s\S]*?((?:{[\s\S]*?)*?}[\s\S]})"#).unwrap();
let string = "#############################################################################
# DB substitution file generated by http://github.com/epics-containers/ibek #
#############################################################################
file \"$(IOCSTATS)/db/iocAdminSoft.db\" {
pattern
{ \"IOC\" }
{ \"BL01T-EA-TST-02\" }
}
file \"$(IOCSTATS)/db/iocAdminScanMon.db\" {
pattern
{ \"IOC\" }
{ \"BL01T-EA-TST-02\" }
}
file \"$(ADSIMDETECTOR)/db/simDetector.template\" {
pattern
{ \"P\", \"R\", \"PORT\", \"TIMEOUT\", \"ADDR\" }
{ \"BL01T-EA-TST-02\", \":DET:\", \"DET.DET\", \"1\", \"0\" }
}
file \"$(ADCORE)/db/NDPva.template\" {
pattern
{ \"NDARRAY_PORT\", \"ADDR\", \"SCANRATE\", \"NDARRAY_ADDR\", \"ENABLED\", \"P\", \"R\", \"TIMEOUT\", \"PORT\" }
{ \"DET.DET\", \"0\", \"I/O Intr\", \"0\", \"0\", \"BL01T-EA-TST-02\", \":PVA:\", \"1\", \"DET.PVA\" }
}
file \"$(ADCORE)/db/NDStdArrays.template\" {
pattern
{ \"NDARRAY_PORT\", \"FTVL\", \"ADDR\", \"SCANRATE\", \"NELEMENTS\", \"NDARRAY_ADDR\", \"ENABLED\", \"P\", \"R\", \"TIMEOUT\", \"TYPE\", \"PORT\" }
{ \"DET.DET\", \"CHAR\", \"0\", \"I/O Intr\", \"1048576\", \"0\", \"0\", \"BL01T-EA-TST-02\", \":ARR:\", \"1\", \"Int8\", \"DET.ARR\" }
}
file \"simDetector.pvi.template\" {
pattern
{ \"P\", \"R\" }
{ \"BL01T-EA-TST-02\", \":DET:\" }
}
file \"NDPluginPva.pvi.template\" {
pattern
{ \"P\", \"R\" }
{ \"BL01T-EA-TST-02\", \":PVA:\" }
}
file \"NDPluginStdArrays.pvi.template\" {
pattern
{ \"P\", \"R\" }
{ \"BL01T-EA-TST-02\", \":ARR:\" }
}
";
// 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/