我来自 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 中执行此操作的等效方法是什么?
或者,如果我需要将匹配项转换为地图,那么制作然后访问地图的最惯用的方法是什么?
相关分类