package main import ( "log" "regexp" "strings" ) func re(s, r string, global bool) string { defer func() { if r := recover(); r != nil { log.Println("panic", r) } }() // min: at least two separators if len(s) < 2 { return "" } z := strings.Split(r[1:], string(r[0])) // match // and /// if len(z) < 2 || len(z) > 3 { return "" } re, err := regexp.Compile(z[0]) if err != nil { return "" } i := 1 if global { i = -1 } return re.ReplaceAllStringFunc(s, func(b string) string { if i != 0 { i -= 1 return z[1] } return b }) }