我有以下 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/