golang 正则表达式,使用回调方法替换对应的内容

golang 正则表达式,使用回调方法替换对应的内容

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 正则表达式,使用回调方法替换对应的内容

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏

我的知识库