@
1. Find系列方法(查找匹配)
方法 |
匹配字串类型 |
返回值 |
返回类型 |
Find() |
[]byte |
第一个匹配 |
[]byte |
FindString() |
string |
第一个匹配 |
string |
FindAll() |
[]byte |
所有匹配 |
[][]byte |
FindAllString() |
string |
所有匹配 |
[]string |
1.1 Find()
语法
| func (re *Regexp) Find(b []byte) []byte |
完整示例
| package main |
| |
| import ( |
| "fmt" |
| "regexp" |
| ) |
| |
| func main() { |
| reg := regexp.MustCompile(".*\\.") |
| myString := "10.10.239.11" |
| result := reg.Find([]byte(myString)) |
| fmt.Printf(string(result)) |
| } |
如果要最短匹配,正则用:.*?
1.2 FindString()
语法
| func (re *Regexp) FindString(s string) string |
完整示例
| package main |
| |
| import ( |
| "fmt" |
| "regexp" |
| ) |
| |
| func main() { |
| reg := regexp.MustCompile(".*?\\.") |
| myString := "10.10.239.11" |
| result := reg.FindString(myString) |
| fmt.Printf(result) |
| } |
1.3 FindAll()
语法
| func (re *Regexp) FindAll(b []byte, n int) [][]byte |
完整示例
| package main |
| |
| import ( |
| "fmt" |
| "regexp" |
| ) |
| |
| func main() { |
| reg := regexp.MustCompile(".*?\\.") |
| myString := "10.10.239.11" |
| result := reg.FindAll([]byte(myString),-1) |
| for _,i := range result { |
| fmt.Printf("%s\n",string(i)) |
| } |
| } |
| reg := regexp.MustCompile(".*\\.") |
则结果为
1.4 FindAllString()
语法
完整示例
| package main |
| |
| import ( |
| "fmt" |
| "regexp" |
| ) |
| |
| func main() { |
| reg := regexp.MustCompile(".*?\\.") |
| myString := "10.10.239.11" |
| result := reg.FindAllString(myString,-1) |
| for _,i := range result { |
| fmt.Printf("%s\n",i) |
| } |
| } |
2. FindIndex系列方法(查找匹配位置)
方法 |
匹配字串类型 |
返回值 |
返回类型 |
FindIndex() |
[ ]byte |
第一个匹配的位置 |
[ ]nit |
FindStringIndex() |
String |
第一个匹配的位置 |
[ ]nit |
FindReaderIndex() |
Reader |
第一个匹配的位置 |
[ ]nit |
FindAllIndex() |
[ ]byte |
所有匹配的位置 |
[ ][ ]nit |
2.1 FindIndex()
语法
| func (re *Regexp) FindIndex(b []byte) (loc []int) |
完整示例
| package main |
| |
| import ( |
| "fmt" |
| "regexp" |
| ) |
| func main() { |
| reg := regexp.MustCompile(".*?\\.") |
| myString := "10.10.239.11" |
| s := reg.Find([]byte(myString)) |
| p := reg.FindIndex([]byte(myString)) |
| fmt.Printf("匹配到字串为:%s\n位置分别为:%d",s,p) |
| } |
如上可见,匹配到字串10.
是原字串10.10.239.11
的 0
位置起 到3
位置之前。
2.2 FindStringIndex()
语法
| func (re *Regexp) FindStringIndex(s string) (loc []int) |
完整示例
| package main |
| |
| import ( |
| "fmt" |
| "regexp" |
| ) |
| func main() { |
| reg := regexp.MustCompile(".*?\\.") |
| myString := "10.10.239.11" |
| s := reg.FindString(myString) |
| p := reg.FindStringIndex(myString) |
| fmt.Printf("匹配到字串为:%s\n位置分别为:%d",s,p) |
| } |
2.3 FindReaderIndex()
语法
| func (re *Regexp) FindReaderIndex(r io.RuneReader) (loc []int) |
完整示例
| package main |
| |
| import ( |
| "bytes" |
| "fmt" |
| "regexp" |
| ) |
| func main() { |
| reg := regexp.MustCompile(".*?\\.") |
| myString := "10.10.239.11" |
| myReader := bytes.NewReader([]byte(myString)) |
| s := reg.Find([]byte(myString)) |
| p := reg.FindReaderIndex(myReader) |
| fmt.Printf("匹配到字串为:%s\n位置分别为:%d",s,p) |
| } |
2.4 FindAllIndex()
语法
| func (re *Regexp) FindAllIndex(b []byte, n int) [][]int |
完整示例
| package main |
| |
| import ( |
| "fmt" |
| "regexp" |
| ) |
| func main() { |
| reg := regexp.MustCompile("\\d+\\.") |
| myString := "10.10.239.11" |
| s := reg.FindAll([]byte(myString),-1) |
| p := reg.FindAllIndex([]byte(myString),-1) |
| fmt.Printf("匹配到字串为:%s\n位置分别为:%d",s,p) |
| } |
| 匹配到字串为:[10. 10. 239.] |
| 位置分别为:[[0 3] [3 6] [6 10]] |
如上可见:
匹配到了三个字串10.
10.
239.
分别在原字串的:
- 起始位置
0
,结束位置3
之前
- 起始位置
3
,结束位置6
之前
- 起始位置
6
,结束位置10
之前
2.5 FindAllStringIndex()
语法
| func (re *Regexp) FindAllStringIndex(s string, n int) [][]int |
完整示例
| package main |
| |
| import ( |
| "fmt" |
| "regexp" |
| ) |
| func main() { |
| reg := regexp.MustCompile("\\d+\\.") |
| myString := "10.10.239.11" |
| |
| s := reg.FindAllString(myString,-1) |
| p := reg.FindAllStringIndex(myString,-1) |
| fmt.Printf("匹配到字串为:%s\n位置分别为:%d",s,p) |
| } |
| 匹配到字串为:[10. 10. 239.] |
| 位置分别为:[[0 3] [3 6] [6 10]] |

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