package main
import (
"regexp"
"fmt"
)
func main() {
var re = regexp.MustCompile(`(?ms)^\s*
(?:
(\w+)\s*\(\s*\)\s*
|
function\s+(\w+)\s*
)
(
[^{}*]*
(
\{[^{}]*\}
[^{}]*
)*
)`)
var str = `function nvim() {
file="$1"
if [[ -n ${file-} ]]; then
command nvim "$file" && echo -ne '\\e[0 q'
else
command nvim && echo -ne '\\e[0 q'
fi
}`
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/