我有两个这样的字符串mystr = "xyz/10021abc/f123"
mystr2 = "abc/10021abd/c222"我想提取 10021abc 和 10021abd。我想出了r = regexp.MustCompile(`(?:xyz\/|abc\/)(.+)\/`)但是当我想使用这个来提取匹配项时:fmt.Println(r.FindString(mystr))它返回整个字符串。我应该如何更改我的正则表达式?
2 回答
PIPIONE
TA贡献1829条经验 获得超9个赞
你可以使用FindStringSubmatch
。
var re = regexp.MustCompile(`(?:xyz\/|abc\/)(.+)\/`)
var s1 = "xyz/10021abc/f123"
var s2 = "abc/10021abd/c222"
fmt.Println(re.FindStringSubmatch(s1)[1])
fmt.Println(re.FindStringSubmatch(s2)[1])
https://go.dev/play/p/C93DbfzVv3a
慕哥6287543
TA贡献1831条经验 获得超10个赞
您可以在此处使用正则表达式替换:
var mystr = "xyz/10021abc/f123"
var re = regexp.MustCompile(`^.*?/|/.*$`)
var output = re.ReplaceAllString(mystr, "")
fmt.Println(output) // 10021abc
- 2 回答
- 0 关注
- 203 浏览
添加回答
举报
0/150
提交
取消