小编典典

如何遍历正则表达式匹配组

go

说我的数据看起来像这样:

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”,而不是进行迭代。


阅读 355

收藏
2020-07-02

共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])

游乐场的例子

2020-07-02