将正则表达式的特殊字符转换。
语法
| func QuoteMeta(s string) string |
完整示例
| package main |
| |
| import ( |
| "fmt" |
| "regexp" |
| ) |
| |
| func main() { |
| pattern := "玄德.*?" |
| myString := regexp.QuoteMeta(pattern) |
| fmt.Println(myString) |
| } |
2. LiteralPrefix()方法(查找正则共同前缀)
语法
| func (re *Regexp) LiteralPrefix() (prefix string, complete bool) |
prefix:共同拥有的前缀
complete:如果 prefix 就是正则表达式本身,则返回 true,否则返回 false
完整示例
| package main |
| |
| import ( |
| "fmt" |
| "regexp" |
| ) |
| |
| func main() { |
| reg := regexp.MustCompile(`Hello[\w\s]+`) |
| fmt.Println(reg.LiteralPrefix()) |
| |
| reg = regexp.MustCompile(`Hello`) |
| fmt.Println(reg.LiteralPrefix()) |
| |
| reg = regexp.MustCompile(`.*Hello`) |
| fmt.Println(reg.LiteralPrefix()) |
| } |
| Hello false |
| Hello true |
| false |
如上
- 结果一,共同前缀
hello
被返回,false
说明该前缀不是正则表达式字串本身
- 结果二,共同前缀
hello
被返回,true
说明该前缀是正则表达式字串本身
- 结果三,没有共同前缀
3. Longest()方法(切换贪婪模式)
语法
| func (re *Regexp) Longest() |
完整示例
| package main |
| |
| import ( |
| "fmt" |
| "regexp" |
| ) |
| |
| func main() { |
| s := `10.10.239.11` |
| reg := regexp.MustCompile(".*?\\.") |
| fmt.Printf("%s\n", reg.FindString(s)) |
| |
| reg.Longest() |
| fmt.Printf("%s\n", reg.FindString(s)) |
| } |
4. NumSubexp()方法(查询正则中分组个数)
语法
| func (re *Regexp) NumSubexp() int |
完整示例
| package main |
| |
| import ( |
| "fmt" |
| "regexp" |
| ) |
| func main() { |
| reg := regexp.MustCompile("(\\d+)\\.(\\d+)") |
| n := reg.NumSubexp() |
| fmt.Printf("正则中分组个数为:%d",n) |
| |
| } |
5. Split() 方法(用正则切割)
语法
| func (re *Regexp) Split(s string, n int) []string |
完整示例
| package main |
| |
| import ( |
| "fmt" |
| "regexp" |
| ) |
| |
| func main() { |
| reg := regexp.MustCompile(`\.`) |
| myString := "www.xishu.com" |
| result := reg.Split(myString, -1) |
| fmt.Printf("结果:%q\n",result ) |
| |
| } |
6. String()方法 (将*regexp.Regexp实例中正则以string输出)
语法
| func (re *Regexp) String() string |
完整示例
| package main |
| |
| import ( |
| "fmt" |
| "regexp" |
| ) |
| |
| func main() { |
| reg := regexp.MustCompile("\\d+$") |
| pattern := reg.String() |
| fmt.Printf("%s\n", pattern) |
| } |
7. SubexpNames() 方法(返回正则分组名)
语法
| func (re *Regexp) SubexpNames() []string |
给正则分组命名:
完整示例
| package main |
| |
| import ( |
| "fmt" |
| "regexp" |
| ) |
| func main() { |
| reg := regexp.MustCompile("(?P<first>\\d+)\\.(?P<second>\\d+)\\.(?P<third>\\d+)\\.(?P<fourth>\\d+)$") |
| namesList := reg.SubexpNames() |
| fmt.Printf("%+v\n", namesList) |
| } |
| [ first second third fourth] |

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