// 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"(https?:)?\/\/(www\.)?((zi\.mu)|(zi\.ma)|(yhoo\.it)|(yfrog\.com)|(yep\.it)|(y\.ahoo\.it)|(xurl\.es)|(xrl\.us)|(xrl\.in)|(wp\.me)|(url\.ie)|(url\.co\.uk)|(url\.az)|(ur1\.ca)|(u\.nu)|(twurl\.nl)|(twurl\.cc)|(tr\.im)|(to\.ly)|(tnij\.org)|(tinyurl\.com)|(tinylink\.in)|(tiny\.pl)|(tiny\.ly)|(tiny\.cc)|(tcrn\.ch)|(ta\.gd)|(t\.co)|(t\.cn)|(su\.pr)|(sp2\.ro)|(snurl\.com)|(snipurl\.com)|(snipr\.com)|(shrt\.st)|(shorturl\.com)|(short\.ie)|(shorl\.com)|(shar\.es)|(sameurl\.com)|(safe\.mn)|(post\.ly)|(ping\.fm)|(ow\.ly)|(om\.ly)|(nyti\.ms)|(nsfw\.in)|(moby\.to)|(migre\.me)|(lnkd\.in)|(linkbun\.ch)|(linkbee\.com)|(liip\.to)|(krunchd\.com)|(korta\.nu)|(j\.mp)|(is\.gd)|(hurl\.me)|(huff\.to)|(goo\.gl)|(fwd4\.me)|(fff\.to)|(ff\.im)|(fb\.me)|(fav\.me)|(eepurl\.com)|(doiop\.com)|(dlvr\.it)|(disq\.us)|(digg\.com)|(digbig\.com)|(decenturl\.com)|(cutt\.us)|(cot\.ag)|(cli\.gs)|(clck\.ru)|(cl\.ly)|(chilp\.it)|(budurl\.com)|(bit\.ly)|(binged\.it)|(bacn\.me)|(arst\.ch)|(alturl\.com)|(afx\.cc)|(adjix\.com)|(adf\.ly)|(4sq\.com)|(3\.ly)|(0rz\.tw)|(we\.tl)|(ouo\.io)|(bfy\.tw)|(bit\.do))\/[a-z0-9]+ ").unwrap();
let string = "https://zi.mu/dfd";
// 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/