golang提取唯一键,使用正则表达式从key = value对字符串中获取值

时间:2017-06-02 05:08:10

标签: regex go

我有以下go字符串:

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

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

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

注意键顺序的差异以及str中缺少的“sslmode”键。

此外,有可能代替空格,单个k,v对也可以用换行符分隔。

现在我想使用regexp从给定字符串中提取唯一键及其对应的值。如果它会有所帮助,我可以给出一个可能出现的所有可能键的列表(用户名,密码,主机,sslmode),但我理想地喜欢一个适用于任何键和值列表的正则表达式解决方案。

怎么做?我知道有可能使用regexp.FindStringSubmatch,但无法完全编写正则表达式。

2 个答案:

答案 0 :(得分:1)

从golang nuts小组得到答案。

    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

答案 1 :(得分:0)

就个人而言,我会看一下像:

((用户|密码|主机)=([\ W] +)

为您提供键入\ 1和\ 2。

中的值

操场上的例子:

https://play.golang.org/p/6-Ler6-MrY