regex - golang使用正则表达式从键=值对字符串中提取唯一键、值

标签 regex go

我有以下 go 字符串:

dbConnStr := "user=someone password=something host=superduperhost sslmode=something"

但 k=v 对代码可以按任何顺序,例如:

dbConnStr := "host=superduperhost user=someone password=something"

请注意 key 顺序的差异以及字符串中缺少的“sslmode” key 。

此外,各个 k,v 对也可能用换行符分隔,而不是空格。

现在我想使用正则表达式从给定字符串中提取唯一键及其相应的值。如果有帮助,我可以提供可能出现的所有可能 key 的列表(用户名、密码、主机、sslmode),但我理想地希望有一个可与任何键和值列表一起使用的正则表达式解决方案。

如何做到这一点?我知道使用 regexp.FindStringSubmatch 可能是可行的,但无法全神贯注于编写正则表达式。

最佳答案

从 golang nut 小组得到了答案。

    var rex = regexp.MustCompile("(\\w+)=(\\w+)")

    conn := `user=someone password=something host=superduperhost
sslmode=something`
    data := rex.FindAllStringSubmatch(conn, -1)

    res := make(map[string]string)
    for _, kv := range data {
        k := kv[1]
        v := kv[2]
        res[k] = v
    }
    fmt.Println(res)

Golang Playground 网址:https://play.golang.org/p/xSEX1CAcQE

关于regex - golang使用正则表达式从键=值对字符串中提取唯一键、值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44321199/

相关文章:

javascript - JS RegEx 替换非捕获组?

c# - string.split 但保持顺序匹配

go - 无法识别的导入路径(导入路径不以主机名开头)

json - 在 GO lang 中使用 API 时如何将 JSON 转换为 Go 类型定义

go - Prometheus客户过早清理柜台?

go - 如何声明 runtime.LockOSThread() 和 runtime.UnlockOSThread()

javascript - 使用正向查找开销的具有多个标准的键值模式

regex - 为什么 vim 的正则表达式语法有两个单词边界?

c# - 计数正则表达式替换 (C#)

file - 如何优化从 Go 中的文本文件中查找字谜