1. 介绍

文档地址:https://pkg.go.dev/regexp

Go 标准库 regexp 用于正则表达式搜索。

使用正则表达式匹配字符串:

matched, err := regexp.Match("foo.*", []byte("seafood"))

编译正则表达式并匹配字符串:

var re = regexp.MustCompile("^[0-9]+$")
fmt.Println(re.MatchString("a3423"))
fmt.Println(re.MatchString("342432"))
fmt.Println(re.MatchString("snakey"))

2. 类型

2.1 Regexp

类型定义:

type Regexp struct {
	// contains filtered or unexported fields
}

方法:

// Compile 编译正则表达式
func Compile(expr string) (*Regexp, error)

// MustCompile 编译正则表达式,如果无法处理则panic
func MustCompile(str string) *Regexp

// String 编译的原字符串
func (re *Regexp) String() string

// 是否匹配
func (re *Regexp) Match(b []byte) bool
func (re *Regexp) MatchString(s string) bool

// 返回匹配的内容
func (re *Regexp) Find(b []byte) []byte
func (re *Regexp) FindString(s string) string
func (re *Regexp) FindAll(b []byte, n int) [][]byte
func (re *Regexp) FindAllString(s string, n int) []string

// 返回匹配的索引
func (re *Regexp) FindIndex(b []byte) (loc []int)
func (re *Regexp) FindStringIndex(s string) (loc []int)
func (re *Regexp) FindAllIndex(b []byte, n int) [][]int
func (re *Regexp) FindAllStringIndex(s string, n int) [][]int

// 替换
func (re *Regexp) ReplaceAll(src, repl []byte) []byte
func (re *Regexp) ReplaceAllString(src, repl string) string
func (re *Regexp) ReplaceAllFunc(src []byte, repl func([]byte) []byte) []byte
func (re *Regexp) ReplaceAllStringFunc(src string, repl func(string) string) string

// Split 分割
func (re *Regexp) Split(s string, n int) []string

3. 函数

// 匹配正则表达式和字符串
func Match(pattern string, b []byte) (matched bool, err error)
func MatchString(pattern string, s string) (matched bool, err error)

// MatchReader 匹配正则表达式和输入流
func MatchReader(pattern string, r io.RuneReader) (matched bool, err error)