我有兩個這樣的字符串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 關注
- 230 瀏覽
添加回答
舉報
0/150
提交
取消