(原文地址:https://blog.gm7.org/%E4%B8%AA%E4%BA%BA%E7%9F%A5%E8%AF%86%E5%BA%93/03.%E7%BC%96%E7%A8%8B%E5%BC%80%E5%8F%91/GO/02.GO%E5%B8%B8%E7%94%A8%E5%AE%9E%E4%BE%8B.html

匹配内容是否存在

  1. package main
  2. import (
  3. "fmt"
  4. "regexp"
  5. )
  6. func main() {
  7. re := "\\d{1,9}" //定义规则,匹配数字1到9
  8. data := "aaa5555597874433121684515345aaaaa"
  9. re1, _ := regexp.MatchString(re, data)
  10. fmt.Println(re1) //true
  11. }

提取内容

  1. package main
  2. import (
  3. "fmt"
  4. "regexp"
  5. )
  6. func main() {
  7. re, _ := regexp.Compile("(\\d{1,3})\\d{6,8}") //定义规则,匹配数字1到3,并且连接着数字6到8
  8. data := "123131654852079846598465132489651328465132468513246513248651348651"
  9. fmt.Println(re.MatchString(data)) //true,返回布尔型,判断是否存在
  10. fmt.Println(re.FindString(data)) //12313165485,匹配第一个匹配到的结果
  11. fmt.Println(re.FindStringIndex(data)) //[0 11],匹配第一个匹配到的结果的开始和结束索引
  12. fmt.Println(re.FindStringSubmatch(data)) //[12313165485 123] 返回包括了()子匹配的结果
  13. fmt.Println(re.FindAllString(data, -1)) //返回匹配的所有内容,第二个参数是返回个数,-1代表全部
  14. fmt.Println(re.FindAllStringSubmatch(data, -1)) //同时返回子匹配的结果
  15. fmt.Println(re.FindAll([]byte(data), -1)) //按字节匹配,返回结果也是字节
  16. }

image.png

替换内容

  1. package main
  2. import (
  3. "fmt"
  4. "regexp"
  5. )
  6. func main() {
  7. re, _ := regexp.Compile("\\d{1,3}")
  8. data := "1212312313899078777bbbbbbbbbbbbbbbb"
  9. fmt.Println(re.ReplaceAllString(data, "a")) //aaaaaaabbbbbbbbbbbbbbbb
  10. }