func getRepl(match []byte) []byte {
var rspl []byte
//fmt.Printf("正则匹配结果:%s\n", match)
mat := string(match)
v := strings.Trim(mat, "{}")
vs := strings.Split(v, "-")
fmt.Println("url is %v====%v", vs[0], vs[1])
length, _ := strconv.Atoi(vs[1])
urldir := GenRandStr(vs[0], length, false)
rspl = append(rspl, urldir...)
return rspl
}
var re = regexp.MustCompile(`(?m)\[([^\[\]]+)\]\s*\(([^()]+)\)`)
var str1 = `[内容2] (xxxx4)`
var substitution = "http://$2/$1"
fmt.Println(re.ReplaceAllString(str1, substitution))
reg := regexp.MustCompile(`\{([^{(*)}]*)}`)
myString := "http://www.dom.com/{字符-4}/{数字-9}/{时间-yymmd}.html"
result := reg.ReplaceAllFunc([]byte(myString), getRepl)
fmt.Printf("最终替换结果:%s\n", result)
[rihide]
func GenRandStr(tag string, length int, lower bool) string { var str []byte if length <= 0 { length = 1 } switch tag { case "数字": str = rStr[:10] case "字符": str = rStr[:] case "字母": str = rStr[10:] default: return tag } result := make([]byte, length) for i := range result { result[i] = str[rand.Intn(len(str))] } if lower { result = bytes.ToLower(result) } ret := bytes.Buffer{} ret.Write(result) return ret.String() }
[/rihide]
未经允许不得转载:微信 美文-微信文章库-我的知识库 » golang 正则表达式,使用回调方法替换对应的内容