package main
import (
"regexp"
"fmt"
)
func main() {
var re = regexp.MustCompile(`(?m)(?=^(\((?:\w+\h*|(?1)\h*)*+\))$)(\()|(?<!^)\G(?:(\w+)(?=\h*\))|(\w+)|\h*|(\()|(\))(?=\h*[\w(])|(\)))`)
var str = `(10 AND 20 AND (30 OR (40 AND 50)))
Into
['10', 'AND', '20', 'AND', ['30', 'OR', ['40', 'AND', '50']]]`
var substitution = "${2:+[}${3:+'$3'}${4:+'$4', }${5:+[}${6:+], }${7:+]}"
fmt.Println(re.ReplaceAllString(str, substitution))
}
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/