// 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#"@(\"[\w\s]+\")|(?!@(\w+)@(\w+))@(\w+)"#).unwrap();
let string = "There is @key1 apples on the table.
There is @\"key1\" apples on the table.
There is @key 4 apples on the table.
There is @\"key 4\" apples on the table.
There is @key@key2 apples on the table.
There is @key3 apples on the table. (second step)
There is @\"key @\"key3\"\" apples on the table.
There is @\"key 4\" apples on the table. (second step)
There is @\"key @key3\" apples on the table.
There is @\"key 4\" apples on the table. (second step)
There is @\"key @key3 \" apples on the table.
There is @\"key 4 \" apples on the table. (second step)
There is @\"key @\"key3@key7\"\" apples on the table.
There is @\"key @\"key32\"\" apples on the table. (second step)
There is @\"key 21\" apples on the table. (3rd step)
There is @key@key2@key3@key4 apples on the table.
There is @key@key2@key35 apples on the table. (second step)
There is @key@key26 apples on the table. (3rd step)
There is @key7 apples on the table. (4th step)
";
// 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/