regexp包 提供了对正则表达式的支持

常用函数

  • Match:测试字节切片是否匹配正则表达式字符串
  • MatchString:测试字符串是否匹配正则表达式字符串
  • MatchReader:测试RuneReader对象是否匹配正则表达式字符串
  • QuoteMeta:将正则表达式使用的字符.+*?()[]^$等使用\进行转义

    结构体

  • Regexp

常用函数

  • Compile: 解析字符串位正则表达式对象指针
  • MustCompile:解析字符串位正则表达式对象指针,正则字符串解析失败报错

常用方法

  • Find:在字节切片中查找第一个匹配的结果
  • FindString: 在字符串中查找第一个匹配的结果
  • FindAll:在字节切片中查找所有匹配的结果
  • FindAllString:在字符串中查找所有匹配的结果
  • Longest: 贪婪模式切换
  • Match: 判断字节切片是否与正则表达式匹配
  • MatchString:判断字符串是否与正则表达式匹配
  • ReplaceAll:替换匹配的所有字节切片
  • ReplaceAllString:替换匹配的所有字符串
  • Split: 按照正则表达式分割为N个元素的字符串切片, N<0 分割所字串
  • String: 将正则表达式转化为字符串类型

    实操

    learnRegexp.go

    ```go package learnRegexp

import ( “fmt” “regexp” )

func LearnRegexp() { fmt.Println(regexp.MatchString(^\d+$, “1”)) fmt.Println(regexp.QuoteMeta(\.+*?()|[]^$))

  1. var reg *regexp.Regexp = regexp.MustCompile(`(?U)\d+`) // 标记为非贪婪模式
  2. var reg1 *regexp.Regexp = regexp.MustCompile(`\d+`)
  3. fmt.Println(reg.FindString("010-123439459-123"))
  4. fmt.Println(reg.FindAllString("010-123456890-123", 2))
  5. fmt.Println(reg.FindAllString(`010-123456789-123`, -1))
  6. fmt.Println(reg1.FindString(`010-123456789-123`))
  7. fmt.Println(reg1.FindAllString("010-123456789-234", 2))
  8. fmt.Println(reg1.FindAllString("010-123456789-234", -1))
  9. reg.Longest() // 切换为贪婪模式
  10. fmt.Println(reg.FindString("010-123456789-123"))
  11. fmt.Println(reg.FindAllString("010-123456789-123", 2))
  12. fmt.Println(reg.FindAllString("010-123456789-123", -1))
  13. fmt.Println(reg.ReplaceAllString("010-123456789-123", "xxx"))
  14. reg01 := regexp.MustCompile(`^010-`)
  15. fmt.Println(reg01.MatchString("010-1232325-234"))
  16. fmt.Println(reg01.MatchString("040-1232325-234"))
  17. reg02 := regexp.MustCompile(regexp.QuoteMeta(`-`))
  18. fmt.Println(reg02.Split("010-11111-1111-1111", -1))
  19. fmt.Println(reg02.String())

}

  1. <a name="igDRW"></a>
  2. ## learnRegexp_test.go
  3. ```go
  4. package learnRegexp
  5. import "testing"
  6. func TestLearnRegexp(t *testing.T) {
  7. LearnRegexp()
  8. }

执行结果

  1. GOROOT=C:\Program Files\Go #gosetup
  2. GOPATH=C:\Users\ligz\go #gosetup
  3. "C:\Program Files\Go\bin\go.exe" test -c -o C:\Users\ligz\AppData\Local\Temp\GoLand\___basicproject_learnRegexp__TestLearnRegexp.test.exe basicproject/learnRegexp #gosetup
  4. "C:\Program Files\Go\bin\go.exe" tool test2json -t C:\Users\ligz\AppData\Local\Temp\GoLand\___basicproject_learnRegexp__TestLearnRegexp.test.exe -test.v -test.paniconexit0 -test.run ^\QTestLearnRegexp\E$ #gosetup
  5. === RUN TestLearnRegexp
  6. true <nil>
  7. \\\.\+\*\?\(\)\|\[\]\^\$
  8. 0
  9. [0 1]
  10. [0 1 0 1 2 3 4 5 6 7 8 9 1 2 3]
  11. 010
  12. [010 123456789]
  13. [010 123456789 234]
  14. 010
  15. [010 123456789]
  16. [010 123456789 123]
  17. xxx-xxx-xxx
  18. true
  19. false
  20. [010 11111 1111 1111]
  21. -
  22. --- PASS: TestLearnRegexp (0.00s)
  23. PASS
  24. 进程 已完成,退出代码为 0