@
1. 扩展
1.1 Expand()方法
语法
| func (re *Regexp) Expand(dst []byte, template []byte, src []byte, match []int) []byte |
说明
- 将
template
的结果添加到dst
后边
template
中有 $1
$2
……,这些变量可以在 src
中找到。
match
是对src
对应组的解析。
完整示例
| package main |
| |
| import ( |
| "fmt" |
| "regexp" |
| ) |
| |
| func main() { |
| reg := regexp.MustCompile(`(.*),(.*),(.*)`) |
| src := []byte("刘,备,玄德") |
| dst := []byte("人员信息:") |
| template := []byte("姓$1 名$2 字$3") |
| match := reg.FindSubmatchIndex(src) |
| s := reg.Expand(dst, template, src, match) |
| fmt.Printf("%s\n",s) |
| } |
1.2 ExpandString() 方法
语法
| func (re *Regexp) ExpandString(dst []byte, template string, src string, match []int) []byte |
完整示例
| package main |
| |
| import ( |
| "fmt" |
| "regexp" |
| ) |
| |
| func main() { |
| reg := regexp.MustCompile(`(.*),(.*),(.*)`) |
| src := "刘,备,玄德" |
| dst := []byte("人员信息:") |
| template := "姓$1 名$2 字$3" |
| match := reg.FindStringSubmatchIndex(src) |
| s := reg.ExpandString(dst, template, src, match) |
| fmt.Printf("%s\n",s) |
| } |
2. 根据正则切割
2.1 Split() 方法
语法
| func (re *Regexp) Split(s string, n int) []string |
说明:
- n > 0:最多分割几个子字串(切够了最后一个就不切了)
- n == 0:返回空
- n < 0:有多少切多少,返回所有结果
完整示例
| package main |
| |
| import ( |
| "fmt" |
| "regexp" |
| ) |
| |
| func main() { |
| myString := "10.10.239.11" |
| reg := regexp.MustCompile(`\.`) |
| resultList := reg.Split(myString,-1) |
| fmt.Printf("%q",resultList) |
| } |
示例(n不同值的结果)
| package main |
| |
| import ( |
| "fmt" |
| "regexp" |
| ) |
| |
| func main() { |
| myString := "10.10.239.11" |
| reg := regexp.MustCompile(`\.`) |
| fmt.Printf("n=-1:%q\n",reg.Split(myString,-1)) |
| fmt.Printf("n=0:%q\n",reg.Split(myString,0)) |
| fmt.Printf("n=1:%q\n",reg.Split(myString,1)) |
| fmt.Printf("n=2:%q\n",reg.Split(myString,2)) |
| fmt.Printf("n=3:%q\n",reg.Split(myString,3)) |
| } |
| n=-1:["10" "10" "239" "11"] |
| n=0:[] |
| n=1:["10.10.239.11"] |
| n=2:["10" "10.239.11"] |
| n=3:["10" "10" "239.11"] |
n=-1,完全切割,且返回了所有切割结果。
n=0,返回空。
n=1,切割成一个子字串,相当于没有切割
n=2,切割成两个子字串,第一个正常切,第二个是最后一个了,不切了,返回剩余所有。
n=3,切割成三个子字串,前两个正常切,第三个是最后一个了,不切了,返回剩余所有。

【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)