我正在尝试使用 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条经验 获得超7个赞
它返回 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 关注
- 163 浏览
添加回答
举报
0/150
提交
取消