// 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" *(?:.*\S.*\n)+\n? *: +(?:.|\n)+?(?:\n{2,}(?=\S)(?! *: +)(?! *(?:\S.*\n)+?\n? *: +)|$)").unwrap();
let string = "=== Single <dt> and <dd>
GitHub
: a site where over 73 million developers shape the future of software, together
=== Multiple <dt>-<dd> group
Firefox
: a free, open source, cross-platform, graphical web browser developed by the Mozilla Corporation and hundreds of volunteers
MDN
: provides information about Open Web technologies including HTML, CSS, and APIs for both Web sites and progressive web apps
=== Single <dt> with multiple <dd>s
Apple
: an American multinational technology company that specializes in consumer electronics, computer software and online services.
: an edible fruit produced by an apple tree
=== Multiple <dt>s
Windows
Microsoft Windows
Win
: a group of several proprietary graphical operating system families, all of which are developed and marketed by Microsoft
=== separated by blank lines
Solaris
: a 1961 science fiction novel by Polish writer Stanisław Lem
: a proprietary Unix operating system originally developed by Sun Microsystems
=== <dd>s with inline breaks
Oracle
: an American multinational computer technology
corporation headquartered in Austin, Texas
: the priest or priestess uttering the prediction,
may also refer to the site of the oracle
===
😂
: 😂 face with tears of joy
===
Term 1
: This is a definition with two paragraphs. Lorem ipsum
dolor sit amet, consectetuer adipiscing elit. Aliquam
hendrerit mi posuere lectus.
Vestibulum enim wisi, viverra nec, fringilla in, laoreet
vitae, risus.
: Second definition for term 1, also wrapped in a paragraph
because of the blank line preceding it.
Term 2
: This definition has a code block, a blockquote and a list.
code block.
> block quote
> on two lines.
1. first list item
2. second list item";
// 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/