package main
import (
"regexp"
"fmt"
)
func main() {
var re = regexp.MustCompile(`(?ms)([^\{\{]++|\{(?!\{))
|
\{\{(\w+)
(?: \s+ (\w+(?:=(?:"((?:\\\\\\\\|\\"|[^"]++)*)"|'((?:\\\\\\\\|\\'|[^']++|)*)'))? ) )*
\}\}
((?R)*)
\{\{/\g{-5}\}\}
|
\{\{(\w+)(?: \s+ (\w+(?:=(?:"((?:\\\\\\\\|\\"|[^"]++)*)"|'((?:\\\\\\\\|\\'|[^']++|)*)'))? )
)*\}\}`)
var str = `{{placeholder name="Alexey"}}
sdasdasda
dasdad
ads
asdasd
sdasd
{{/placeholder}}
<div class="asdasdasd">
{{cssArea}}
{{/cssArea}}
{{escaped open="\"sdfsdf" close='dfdfg'}}
{{/escaped}}
</div>
{{holder name='sadasdas'}}`
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/