package main
import (
"regexp"
"fmt"
)
func main() {
var re = regexp.MustCompile(` *(?:.*\S.*\n)+\n? *: +(?:.|\n)+?(?:\n{2,}(?=\S)(?! *: +)(?! *(?:\S.*\n)+?\n? *: +)|$)`)
var str = `=== 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`
for i, match := range re.FindAllString(str, -1) {
fmt.Println(match, "found at index", i)
}
}
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 Golang, please visit: https://golang.org/pkg/regexp/