使用 golangs regex 解析体育成绩

我正在尝试使用 golang regex 来解析体育分数,但找不到原因,为什么它不解析所有分数部分,而只解析第一个和最后一个。


package main


import (

    "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 个元素?


catspeake
浏览 165回答 1
1回答

qq_遁去的一_1

它返回 3 个元素,因为有第 0 个组(整个字符串)和 2 个捕获组:1.  [0-6]   `102:72`2.  [29-34] `23:26`现在,您应该考虑您需要什么,并且只使用您需要的东西。或许,你正在寻找的(\d+:\d+)那会回来102:7228:1727:1524:1423: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"]] 
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go