// 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"(?mix)# Step 1: match all summary tags and skip them using recursive regexes !
(
<summary>
(?:
(?:(?!</?summary\s*>)[\s\S])
|
(?1)
)*
</summary\s*>
)
(*SKIP)(*FAIL)
|
# Step 2 : make sure the line doesn't start with bla or function
^(?!\s*(?:function|bla)\s*update)
# Step 3 : just match
.*?update.*").unwrap();
let string = "<summary>
update record 'djk'
</summary>
<tester>
function update record 'djk'
update record 'djk'
function method update record 'djk'
bla update
</tester>";
// 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/