我正在嘗試使用 golang regex 來解析體育分數,但找不到原因,為什么它不解析所有分數部分,而只解析第一個和最后一個。package mainimport ( "fmt" "regexp")func main() { var FirstQuarterBasketballRegexp = regexp.MustCompile(`^(\d+:\d+)\s\((?:(\d+:\d+)(?:,\s)?)+\)$`) fmt.Printf("%q\n", FirstQuarterBasketballRegexp.FindAllStringSubmatch("102:72 (28:17, 27:15, 24:14, 23:26)", -1))}它打印一個字符串[["102:72 (28:17, 27:15, 24:14, 23:26)" "102:72" "23:26"]]為什么它在一個切片中只包含 3 個元素?
1 回答

qq_遁去的一_1
TA貢獻1725條經驗 獲得超8個贊
它返回 3 個元素,因為有第 0 個組(整個字符串)和 2 個捕獲組:
1. [0-6] `102:72`
2. [29-34] `23:26`
現在,您應該考慮您需要什么,并且只使用您需要的東西。
或許,你正在尋找的(\d+:\d+)那會回來
102:72
28:17
27:15
24:14
23:26
試試這個代碼(示例程序可在此處獲得):
func main() {
var FirstQuarterBasketballRegexp = regexp.MustCompile(`\d+:\d+`)
fmt.Printf("%q\n", FirstQuarterBasketballRegexp.FindAllStringSubmatch("102:72 (28:17, 27:15, 24:14, 23:26)", -1))
}
輸出:
[["102:72"] ["28:17"] ["27:15"] ["24:14"] ["23:26"]]
- 1 回答
- 0 關注
- 200 瀏覽
添加回答
舉報
0/150
提交
取消