// 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"^(?:[A-Za-z0-9_][A-Za-z0-9_\-]*(?:\.[A-Za-z0-9_\-]+)*\/)+$").unwrap();
let string = "dir
dir/
dir//
dir./
-dir/
.dir/
_dir/
__dir/
_-dir/
_.dir/
dir.name/
ABCDEFGHIJKLMNOPQRSTUVWXYZ.abcdefghijklmnopqrstuvwxyz.0123456789_-/
dir/dir/filename
dir/dir/filename.ext
// values currently used in wjec.services.properties:
dev.est.edientries.archive
dev-est-reports
dev-est-csv-import
dev-est-csv-import-archive
// alternatives:
dev.est.edientries.archive/
dev-est-reports/
dev-est-csv-import/
dev-est-csv-import-archive/";
// result will be a tuple containing the start and end indices for the first match in the string
let result = regex.captures(string);
let (start, end) = match result {
Some((s, e)) => (s, e),
None => {
// ...
}
};
println!("{}", &string[start, end]);
}
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/