登录
首页 >  Golang >  Go问答

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

来源:Golang技术栈

时间:2023-03-31 19:04:43 176浏览 收藏

大家好,今天本人给大家带来文章《如何遍历正则表达式匹配组》,文中内容主要涉及到golang,如果你对Golang方面的知识点感兴趣,那就请各位朋友继续看下去吧~希望能真正帮到你们,谢谢!

问题内容

说我的数据如下所示:

name=peter 
age=40
id=99

我可以创建一个正则表达式

(\w+)=(\w+)

将 name、age 和 id 匹配到 group1,并将 peter、40、99 匹配到 group 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])

游乐场示例

今天关于《如何遍历正则表达式匹配组》的内容介绍就到此结束,如果有什么疑问或者建议,可以在golang学习网公众号下多多回复交流;文中若有不正之处,也希望回复留言以告知!

声明:本文转载于:Golang技术栈 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>
评论列表