为了账号安全,请及时绑定邮箱和手机立即绑定

FindStringSubmatch 两次返回匹配组

FindStringSubmatch 两次返回匹配组

Go
呼啦一阵风 2021-08-30 15:12:57
也许我错过了关于 go 的一些非常基本的东西regexp.FindStringSubmatch()。我想用字符串后面的所有数字捕获组,"Serial Number: "但得到意外输出。我的代码如下:package mainimport "fmt"import "regexp"func main() {    x := "Serial Number: 12334"    r := regexp.MustCompile(`(\d+)`)    res := r.FindStringSubmatch(x)    for i,val := range res {        fmt.Printf("entry %d:%s\n", i,val)    }}输出是:entry 0:12334entry 1:12334我更熟悉 python 的分组,这看起来很简单:>>> re.search('(\d+)', "Serial Number: 12344").groups()[0]'12344'我怎样才能让分组在 go 中工作?谢谢
查看完整描述

1 回答

?
梦里花落0921

TA贡献1772条经验 获得超6个赞

来自Regexp.FindStringSubmatch

FindStringSubmatch 返回一段字符串,其中包含 s 中正则表达式最左边匹配项的文本以及匹配项

所以:

  • 第一个条目是匹配的内容:' 12334'(最左边的匹配)

  • 第二个条目是捕获的组:' 12334'

另一个例子:

re := regexp.MustCompile("a(x*)b(y|z)c")
fmt.Printf("%q\n", re.FindStringSubmatch("-axxxbyc-"))

那将打印:

  • 最左边的匹配: "axxxbyc"

  • 两个被捕获的组: "xxx" "y"


查看完整回答
反对 回复 2021-08-30
  • 1 回答
  • 0 关注
  • 370 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信