// 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"X-Gmail-Labels\s*:\s*(?P<X_Gmail_Labels>[\w]+,[\w]+)[\r|\n|\S|\s]+Delivered-To\s*:\s*(?P<delivered_to>[\S]+)[\r|\n|\S|\s]+Subject\s*:\s*(?P<subject>.+)[\r|\n|\S|\s]+From\s*:\s*(?P<from>[^>]+>)").unwrap();
let string = "From 1488780641874111180@xxx Mon Dec 29 12:11:00 2014
X-GM-THRID: 1488780145305309925 X-Gmail-Labels: Sent,Important
MIME-Version: 1.0 Received: by 10.52.29.70 with HTTP; Sun, 28 Dec 2014 16:11:00 -0800 (PST)
X-Originating-IP: [82.13.144.221]
In-Reply-To: <01ff42fddfded95cfa8b14fa5559b0fb.squirrel@webmail04.register.com>
References: <01ff42fddfded95cfa8b14fa5559b0fb.squirrel@webmail04.register.com>
Date: Mon, 29 Dec 2014 00:11:00 +0000
Delivered-To: hello@domain.co Message-ID: <CAN8wjQQWm33RS-hDdE1k3c6CMOge9-eq=3GrcNssV8gPYi+osA@mail.gmail.com>
Subject: Re: test subject: added - 1 From: DG <hello@domain.co> To: info@otherdomain.us
Content-Type: multipart/alternative; boundary=001a11c2183a9b3b4e050b4fb549
--001a11c2183a9b3b4e050b4fb549
Content-Type: text/plain; charset=UTF-8
Hey Chris,
Is that price for the pass with tax?
Also do you have any recommendations for good rental places in town?
Cheers,
-dave";
// 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/