说我的数据看起来像这样:
name=peter age=40 id=99
我可以创建一个正则表达式
(\w+)=(\w+)
要将名称,年龄和id匹配到第1组中,将peter,40、99匹配到第2组中。但是,我要迭代甚至选择地遍历这些组。例如,
如果group1值是id,我想进行其他处理。所以算法就像
//iterate through all the group1, if I see group1 value is "id", then I assign the corresponding group2 key to some other variable. E.g., newVar = 99
我想做的第二件事就是跳转到匹配的group1的第三个实例,并获取键“ id”,而不是进行迭代。
使用FindAllStringSubmatch查找所有匹配项:
pat := regexp.MustCompile(`(\w+)=(\w+)`) matches := pat.FindAllStringSubmatch(data, -1) // matches is [][]string
像这样遍历匹配的组:
for _, match := range matches { fmt.Printf("key=%s, value=%s\n", match[1], match[2]) }
通过与match [1]比较来检查“ id”:
for _, match := range matches { if match[1] == "id" { fmt.Println("the id is: ", match[2]) } }
通过建立索引获得第三场比赛:
match := matches[2] // third match fmt.Printf("key=%s, value=%s\n", match[1], match[2])
游乐场的例子