golang正则表达式查找字符串但只提取其中的子字符串

我有两个这样的字符串

mystr = "xyz/10021abc/f123"
mystr2 = "abc/10021abd/c222"

我想提取 10021abc 和 10021abd。我想出了

r = regexp.MustCompile(`(?:xyz\/|abc\/)(.+)\/`)

但是当我想使用这个来提取匹配项时:

fmt.Println(r.FindString(mystr))

它返回整个字符串。我应该如何更改我的正则表达式?


慕后森
浏览 204回答 2
2回答

PIPIONE

你可以使用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

您可以在此处使用正则表达式替换:var mystr = "xyz/10021abc/f123"var re = regexp.MustCompile(`^.*?/|/.*$`)var output = re.ReplaceAllString(mystr, "")fmt.Println(output)  // 10021abc
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go