// 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)(?m)^([^\r\n]+)\s*\n([^\r\n]+)\s*\n([^\r\n]+):\s*([^\r\n]+)\s*\n([^\r\n]+):\s*([^\r\n]+)(?:\s*\n([^\r\n]+):\s*([^\r\n]+))?\s*\nDirections:\s*\n((?:.+\s*\n?)+?)(?=^[^\r\n]+\s*\n[^\r\n]+\s*\n[^\r\n]+:|\z)").unwrap();
let string = "Bob's Diner
Reefer
Location: Mike's Beef Barn
Time: 1,584
Stop: Highway Hotel.
Directions:
Go south on Broadway.
Get on freeway 30 South. Exit Main St.
Go south on Main to Highway Hotel.
Go north on Main. Go east on Highway 15. Exit Market St.
1522 Market St.
Comfy Pillows and Mattresses
Dry Van
Location: Innovative Furniture
Time: 223
Directions:
Turn right and go to Seville Ave.
Turn left on St. Michael St.
Go to end at the Comfy Sign.
Washington County Construction
Low Boy
Location: Marble Quarry in Gainesville.
Time: 1,135
Stop: Mountainside Motel.
Directions:
Make a U-turn on Alameda Ave. and a right on Chantilly Lane.
Get on freeway 67 East.
Pass the Hospital and Exit Seward St.
Turn left on Coral St. to Mountainside Motel on right.
Exit motel and go east on Jefferson and then right on Belhaven.
Follow Joelle Ln. to Hwy 49.
Turn right at the Red Hill Junction. Go east on Harewood Rd.
Turn left on Blue Heron St.
8964 Red Rooster St.
";
// 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/