package main
import (
"regexp"
"fmt"
)
func main() {
var re = regexp.MustCompile(`(?ms)(?<katex_all>
(?:
(?<!\\|\$)
(?<katex_open>
\${2}
|
\${1}
)
(?!\$)
\n?
(?<katex_content>.+?)\n?
(?<!\\|\$)
(?<katex_close>\g{katex_open})
(?!\$)
\n?
)
|
(?:
(?<!\\)
(?<katex_open>\\\[)
\n?
(?<katex_content>.+?)\n?
(?<!\\)
(?<katex_close>
\\\]
)\n?
)
|
(?:
(?<!\\)
(?<katex_open>\\\()
\n?
(?<katex_content>.+?)\n?
(?<!\\)
(?<katex_close>
\\\)
)\n?
)
)`)
var str = `$$
\Gamma(z) = \int_0^\infty t^{z-1}e^{-t}dt\,.
$$
This is some text $math \frac12$
other text $\unsupported$
Other node \[ displaymath \\[\\] \frac{1}{2} \] blah
$$ \int_2^3 $$
more text \(and math\) blah
And $math with a
\$ sign$.
This should not match↓
$$$
\Gamma(z) = \int_0^\infty t^{z-1}e^{-t}dt\,.
$$$
This should not match either
$$
\Gamma(z) = \int_0^\infty t^{z-1}e^{-t}dt\,.
$
`
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/