package util import ( "regexp" "strings" ) var ( pgArrayReg = regexp.MustCompile(`(((?P(([^",\\{}\s(NULL)])+|"([^"\\]|\\"|\\\\)*")))(,)?)`) pgValueIdx int ) func init() { for i, subexp := range pgArrayReg.SubexpNames() { if subexp == "value" { pgValueIdx = i break } } } func PGArray(array []byte) []string { var results []string matches := pgArrayReg.FindAllStringSubmatch(string(array), -1) for _, match := range matches { s := match[pgValueIdx] s = strings.Trim(s, "\"") results = append(results, s) } return results }