我有兩個(gè)這樣的字符串mystr = "xyz/10021abc/f123"
mystr2 = "abc/10021abd/c222"我想提取 10021abc 和 10021abd。我想出了r = regexp.MustCompile(`(?:xyz\/|abc\/)(.+)\/`)但是當(dāng)我想使用這個(gè)來(lái)提取匹配項(xiàng)時(shí):fmt.Println(r.FindString(mystr))它返回整個(gè)字符串。我應(yīng)該如何更改我的正則表達(dá)式?
2 回答

PIPIONE
TA貢獻(xiàn)1829條經(jīng)驗(yàn) 獲得超9個(gè)贊
你可以使用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貢獻(xiàn)1831條經(jīng)驗(yàn) 獲得超10個(gè)贊
您可以在此處使用正則表達(dá)式替換:
var mystr = "xyz/10021abc/f123"
var re = regexp.MustCompile(`^.*?/|/.*$`)
var output = re.ReplaceAllString(mystr, "")
fmt.Println(output) // 10021abc
- 2 回答
- 0 關(guān)注
- 235 瀏覽
添加回答
舉報(bào)
0/150
提交
取消