说我的数据如下:
name=peter
age=40
id=99
我可以创建一个正则表达式
(\w+)=(\w+)
将name,age和id匹配到group1,将peter,40,99匹配到第二组。但是,我想迭代甚至有选择地遍历这些组。如,
如果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”而不是迭代。
答案 0 :(得分:1)
使用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])