Match,MatchString,MatchReader,Compile,CompilePOSIX,MustCompile
1. Match 系列函数(判断是否匹配)
函数 |
匹配字串类型 |
返回值 |
返回类型 |
Match() |
[ ]byte |
判断是否匹配 |
bool |
MatchString() |
String |
判断是否匹配 |
bool |
MatchReader() |
io.RuneReader |
判断是否匹配 |
bool |
1.1 Match()
语法
| func Match(pattern string, b []byte) (matched bool, err error) |
完整示例
| package main |
| |
| import ( |
| "fmt" |
| "regexp" |
| ) |
| |
| func main() { |
| pattern := "关羽.*" |
| myString := "关羽关羽关云长" |
| b,_ := (regexp.Match(pattern, []byte(myString))) |
| fmt.Printf("查找结果:%t",b) |
| } |
1.2 MatchString()
语法
| func MatchString(pattern string, s string) (matched bool, err error) |
完整示例
| package main |
| |
| import ( |
| "fmt" |
| "regexp" |
| ) |
| |
| func main() { |
| pattern := "玄德.*" |
| myString := "刘备刘玄德" |
| b,_ := regexp.MatchString(pattern, myString) |
| fmt.Printf("查找结果:%t",b) |
| } |
使用示例(判断字串完全英文)
| func CheckStringWhetherEn(myString string)bool{ |
| b,err :=regexp.MatchString("^([A-z]+)$",myString) |
| if err != nil { |
| fmt.Println(err) |
| } |
| return b |
| } |
1.3 MatchReader()
语法
| func MatchReader(pattern string, r io.RuneReader) (matched bool, err error) |
完整示例
| package main |
| |
| import ( |
| "bytes" |
| "fmt" |
| "regexp" |
| ) |
| |
| func main() { |
| r := bytes.NewReader([]byte("关羽关云长")) |
| b,_ := regexp.MatchReader("云长.*", r) |
| fmt.Printf("查找结果:%t",b) |
| } |
2. Compile系列函数 (判断正则合法性)
函数 |
匹配字串类型 |
返回值 |
返回类型 |
Compile() |
—— |
正则,是否合法 |
(*Regexp, error) |
CompilePOSIX() |
—— |
正则,是否合法 |
(*Regexp, error) |
MustCompile() |
—— |
正则 |
*Regexp |
MustCompilePOSIX() |
—— |
正则 |
*Regexp |
差别:
POSIX
支持POSIX正则表达式
Must
不返回err,但是抛出异常
2.1 Compile()
语法
| func Compile(expr string) (*Regexp, error) |
完整示例
| package main |
| |
| import ( |
| "fmt" |
| "regexp" |
| ) |
| |
| func main() { |
| reg,_ := regexp.Compile(`玄德.*`) |
| fmt.Printf("返回正则表达式字串为:%+v",reg) |
| } |
2.2 CompilePOSIX()
语法
| func CompilePOSIX(expr string) (*Regexp, error) |
完整示例
| package main |
| |
| import ( |
| "fmt" |
| "regexp" |
| ) |
| |
| func main() { |
| |
| reg,_ := regexp.CompilePOSIX(`.*\.`) |
| fmt.Printf("返回正则表达式字串为:%q\n", reg) |
| } |
2.3 MustCompile()
语法
| func MustCompile(str string) *Regexp |
完整示例
| package main |
| |
| import ( |
| "fmt" |
| "regexp" |
| ) |
| |
| func main() { |
| reg := regexp.MustCompile("刘备.*") |
| fmt.Printf("返回正则表达式字串为:%q\n", reg) |
| } |
| |
2.4 MustCompilePOSIX()
语法
| func MustCompile(str string) *Regexp |
3. Match系列方法
函数 |
匹配字串类型 |
返回值 |
返回类型 |
Match() |
[ ]byte |
判断是否匹配 |
bool |
MatchString() |
String |
判断是否匹配 |
bool |
MatchReader() |
io.RuneReader |
判断是否匹配 |
bool |
和Match函数比,Match方法不需要再传入正则,正则在实例化结构体时已经传入了结构体。比如:
| reg := regexp.MustCompile(pattern) |
或者
| reg,err := regexp.Compile(pattern) |
3.1 Must()
语法
| func (re *Regexp) Match(b []byte) bool |
完整示例
| package main |
| |
| import ( |
| "fmt" |
| "regexp" |
| ) |
| |
| func main() { |
| pattern := "刘.*" |
| myString := "刘备刘玄德" |
| |
| reg := regexp.MustCompile(pattern) |
| b := reg.Match([]byte(myString)) |
| fmt.Printf("查找结果:%t",b) |
| } |
3.2 MustString()
语法
| func (re *Regexp) Match(b []byte) bool |
完整示例
| package main |
| |
| import ( |
| "fmt" |
| "regexp" |
| ) |
| |
| func main() { |
| pattern := "刘.*" |
| myString := "刘备刘玄德" |
| |
| reg := regexp.MustCompile(pattern) |
| b := reg.MatchString([]byte(myString)) |
| fmt.Printf("查找结果:%t",b) |
| } |
3.3 MustReader()
语法
| func (re *Regexp) Match(b []byte) bool |
完整示例
| package main |
| |
| import ( |
| "bytes" |
| "fmt" |
| "regexp" |
| ) |
| |
| func main() { |
| pattern := "刘.*" |
| myString := "刘备刘玄德" |
| r := bytes.NewReader([]byte(myString)) |
| |
| reg := regexp.MustCompile(pattern) |
| b := reg.MatchReader(r) |
| fmt.Printf("查找结果:%t",b) |
| } |

【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了