猿问

使用 Go 正则表达式中的命名匹配

我来自 Python,所以我可能只是没有以正确的方式看待这个问题。我想创建一个相当复杂的正则表达式,并能够访问按名称匹配的字段。我似乎找不到一个很好的例子。我设法得到的最接近的是:


package main


import (

  "fmt"

  "regexp"

)


var myExp = regexp.MustCompile(`(?P<first>\d+)\.(\d+).(?P<second>\d+)`)


func main() {

  fmt.Printf("%+v", myExp.FindStringSubmatch("1234.5678.9"))


  match := myExp.FindStringSubmatch("1234.5678.9")

    for i, name := range myExp.SubexpNames() {

        fmt.Printf("'%s'\t %d -> %s\n", name, i, match[i])

    }

    //fmt.Printf("by name: %s %s\n", match["first"], match["second"])

}

注释掉的行是我期望在 Python 中访问命名字段的方式。在 go 中执行此操作的等效方法是什么?


或者,如果我需要将匹配项转换为地图,那么制作然后访问地图的最惯用的方法是什么?


明月笑刀无情
浏览 322回答 3
3回答
随时随地看视频慕课网APP

相关分类

Go
我要回答