【发布时间】:2017-06-07 22:06:59
【问题描述】:
我有以下 go 字符串:
dbConnStr := "user=someone password=something host=superduperhost sslmode=something"
但是 k=v 对的代码可以是任意顺序,例如:
dbConnStr := "host=superduperhost user=someone password=something"
请注意键顺序的差异以及 str 中缺少的“sslmode”键。
另外,单独的 k,v 对也可以用换行符分隔,而不是空格。
现在我想使用正则表达式从给定的字符串中提取唯一键及其对应的值。如果有帮助,我可以列出所有可能出现的键(用户名、密码、主机、sslmode),但理想情况下,我想要一个适用于任何键和值列表的正则表达式解决方案。
如何做到这一点?我知道使用 regexp.FindStringSubmatch 可能是可行的,但我无法全神贯注地编写正则表达式。
【问题讨论】:
-
如果值包含
=,事情可能会变得复杂。看一下lib/pq中parseOpts函数的实现。它将键/值对拆分为map[string]string。