regex - 使用 golangs 正则表达式解析体育比分

标签 regex go

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

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

最佳答案

它返回 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

试试这个代码(sample program is available here):

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"]] 

关于regex - 使用 golangs 正则表达式解析体育比分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29433160/

相关文章:

java - 如何将 "=3"与 java 中的单词边界匹配?

javascript - 正则表达式不允许电子邮件中的点出现在错误的位置

go - 使用 chrome headless 和 GO 转储 DOM

go - 具有回退功能的汇编函数实现

go - 如何导出入站请求结束后可以使用的上下文?

go - 如何通过模板中的变量访问对象字段?

regex - 正则表达式 (|) 管道运算符短路工作的条件是什么?

regex - 什么是正确的 VIM 正则表达式来搜索以获得 = 而不是 ==?

javascript - 无法识别父字符串 JQuery 中的子字符串

go - 为什么在这段代码中发生常量 18446744073709551616 溢出 uint64?