package main import ( "fmt" "regexp" "time" ) func main() { text := `<img src="ddd.png"/><div>asdfa<span>44444444444</span>sdfasdf</div>laasdjflaskj555asdf<p>hjkhjk</p><img src="aaa.jpg"/>` t1 := time.Now() reg := regexp.MustCompile("(\\d)+") //查找所有的连续数字串 d := reg.FindAllString(text, -1) fmt.Println(d) //[44444444444 555] //一维数组,所有匹配项 reg = regexp.MustCompile("<div>.*?</div>") fmt.Println(reg.MatchString(text)) //true 是否匹配正则表达式 reg = regexp.MustCompile("<img (src)=\"(.*?)\"") //查找所有的img标签,包括子串 dd := reg.FindAllStringSubmatch(text, -1) fmt.Println(dd) //[[<img src="ddd.png" src ddd.png] [<img src="aaa.jpg" src aaa.jpg]] //二维数组,每一行表示一个查找结果,每一列第0个元素表示匹配字串,第1个元素表示第1个子串,第2个元素表示第2个子串 reg = regexp.MustCompile("a{2,}") ddd := reg.Split(text, -1) fmt.Println(len(ddd), ddd) //3 [<img src="ddd.png"/><div>asdfa<span>44444444444</span>sdfasdf</div>l | sdjflaskj555asdf<p>hjkhjk</p><img src=" | .jpg"/>] //用正则表达式分割字符串,以2个以上a进行分割 reg = regexp.MustCompile("<div>(.*?)</div>") fmt.Println(reg.ReplaceAllString(text, "$1<br/>")) //正则替换,子串用$表示,返回替换后的字符串 //<img src="ddd.png"/>asdfa<span>44444444444</span>sdfasdf<br/>laasdjflaskj555asdf<p>hjkhjk</p><img src="aaa.jpg"/> reg = regexp.MustCompile(`(\w+),(\w+)`) src := "Golang,World!" // 源文本 dst := []byte("Say: ") // 目标文本(可写) template := "Hello $1, Hello $2" // 模板 match := reg.FindStringSubmatchIndex(src) // 解析源文本 // 填写模板,并将模板追加到目标文本中 fmt.Println(reg.ExpandString(dst, template, src, match)) // "Say: Hello Golang, Hello World" j := 1 for i := 0; i < 1000; i++ { j++ } t2 := time.Now() fmt.Println("运行时间:", t2.Sub(t1)) //很奇怪运行时间为什么是0???是time包取得的时间不准确吗?还是它们运行在不同的线程中? }