// 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#"(?>(?:(?:^|,|\r?\n)\s*)(?:"[^"\\]*(?:\\[\S\s][^"\\]*)*"(?:\s*(?:(?=,|\r?\n)|$))|[^,]*(?:\s*(?:(?=,)|$))))*?(?>(?:^|,|\r?\n)\s*)\K"([^"\\]*?(?:\\[\S\s][^"\\]*?)*,[^"\\]*(?:\\[\S\s][^"\\]*)*)""#).unwrap();
let string = "243,\"p s\",\"\",\"\",\"\",\"Smith, Ph.D.\",\"11872\",\"Canada\",\"\",29,,,\"\",\"\",\"\",\"\",\"\",\"\",\"UT\",\"\",,\"\",\"Bic. Gaspe\",,,,\"Dry cliffs\",,\"\",\"\",\"\",\"\",\"47633\",\"\",\"\",\"\",\"\",1938,7,126839
ID,NAME,TITLE,DESCRIPTION,,
PRO1234,\"JOHN SMITH\",ENGINEER,\"JOHN HAS BEEN WORKING
HARD ON BEING A GOOD
SERVENT.\"
PRO1235,\"KEITH SMITH\",ENGINEER,\"keith, has been working
hard on being a good
servent.\"
PRO1235,\"KENNY SMITH\",,\"keith has been working
hard on being a good
servent.\"
PRO1235,\"RICK SMITH\",,,";
// 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/