// 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"(?mu)^/foo/bar/+(?:(?:find|count)/*$(*SKIP)(*FAIL)|([^/\r\n\t]+))/*$").unwrap();
let string = "--------------------must NOT get as id (reseved key words)
/foo/bar/count
/foo/bar/find
--------------------must NOT get as id (not present)
/foo/bar/
--------------------must NOT get as id (not present tab test)
/foo/bar/
--------------------must NOT get as id (not present line break test)
/foo/bar/
--------------------must NOT get as id (not present tab, line break, multiple slashes test)
/foo/bar// /
/
//
--------------------must get as id
/foo/bar/1
/foo/bar/1c
/foo/bar/c1
/foo/bar/sku
/foo/bar/countfind
/foo/bar/findcount
/foo/bar/skucount
/foo/bar/skufind
/foo/bar/countsku
/foo/bar/findsku
/foo/bar/coun
/foo/bar/fin
/foo/bar/ount
/foo/bar/ind
/foo/bar/skucoun
/foo/bar/skufin
/foo/bar/finsku
/foo/bar/counsku
--------------------must get as id (unnecessary slash test)
/foo/bar/1/
/foo/bar/1c/
/foo/bar/c1/
/foo/bar/sku/
/foo/bar/countfind/
/foo/bar/findcount/
/foo/bar/skucount/
/foo/bar/skufind/
/foo/bar/countsku/
/foo/bar/findsku/
/foo/bar/coun/
/foo/bar/fin/
/foo/bar/ount/
/foo/bar/ind/
/foo/bar/skucoun/
/foo/bar/skufin/
/foo/bar/finsku/
/foo/bar/counsku/
--------------------must get as id (unnecessary|invalid slashed test)
/foo/bar///1///
/foo/bar///1c///
/foo/bar///c1///
/foo/bar///sku///
/foo/bar///countfind///
/foo/bar///findcount///
/foo/bar///skucount///
/foo/bar///skufind///
/foo/bar///countsku///
/foo/bar///findsku///
/foo/bar///coun///
/foo/bar///fin///
/foo/bar///ount///
/foo/bar///ind///
/foo/bar///skucoun///
/foo/bar///skufin///
/foo/bar///finsku///
/foo/bar///counsku///";
// 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/