// 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#"<a(?:\s+name=".*?")?\s+href=.*?#.*?>(.*?)<\/a>"#).unwrap();
let string = "<a href=\"http://example.com/books/1\">The Lord of the Rings</a>
<ul>
<li><a href=\"http://example.com/books/1#c1\" >Chapter 1</a></li>
<li><a name=\"name before href\" href=\"http://example.com/books/1#c2\">Chapter 2</a></li>
<li><a href=\"http://example.com/books/1#c3\" name=\"name after href\">Chapter 3</a></li>
<li><a href=\"http://example.com/books/1#cN\" target=\"_blank\">Chapter N</a></li>
</ul>
<br><br>
<a href=\"http://example.com/books/1\">Harry Potter</a>
<ul>
<li><a href=\"http://example.com/books/2#c1\" target=\"_self\">Chapter 1</a></li>
<li><a href=\"http://example.com/books/2#c2\" name=\"some have name\" title=\"some others have title\" >Chapter 2</a></li>
<li><a href=\"http://example.com/books/2#c3\">Chapter 3</a></li>
<li><a href=\"http://example.com/books/2#cN\" >Chapter N</a></li>
</ul>";
// 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/