package main
import (
"regexp"
"fmt"
)
func main() {
var re = regexp.MustCompile(`(?s)\[(run)] ( (?: (?: (?!\[/?\1]) . )* | (?R) )* ) \[/\1]`)
var str = `[run][one]This[/one][two]That[/two][/run]
[run][one]This 2[/one][two]That 2[/two][/run]
[run][one]IF THIS RESULT DO THIS [run][one]This[/one][two]That[/two][/run][/one][two]IF THIS RESULT DO THAT [run][one]This[/one][two]That[/two][/run][/two][/run]
[run][one]IF THIS RESULT DO THIS
[run][one]This[/one][two]That[/two][/run]
[/one][two]IF THIS RESULT DO THAT [run][one]This[/one][two]That[/two][/run][/two][/run]`
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/