我对Go语言相当陌生,正在寻找一种方法来将可变长度的字符串拆分成一个Map,其中键/值对(所有字符串)由逗号分隔,只有字符串的某些变体可能在给定的键/值对中有多个逗号和/或冒号。举例来说:
String1 variationkeyword1=value1,keyword2=value2,keyword3=value3,value4,value5,keyword4=value6.String2 variationkeyword1=value1,keyword2=value2,keyword3=value3,value4,value5:value6,value7,value8,keyword4=value9 ...
其中“...”反映了将存在键/值对的变量#的事实。最后,我想用一张Map来结束:
map[string]string{
keyword1: "value1",
keyword2: "value2",
keyword3: "value3,value4,value5",
keyword4: "valu6",
}
或
map[string]string{
keyword1: "value1",
keyword2: "value2",
keyword3: "value3,value4,value5:value6,value7,value8",
keyword4: "valu6",
}
不幸的是,我将从文件中阅读的行的格式相当复杂,并且我在更改传入数据格式方面的选项有限。我已经在这方面做了一段时间了,不幸的是我不是正则表达式的向导,所以任何帮助都将非常感谢。
1条答案
按热度按时间cngwdvgl1#
匹配(全局),而不是分割,那么你就不需要查找:
(.*?)=([^=]*)(?:,|$)
.在Go中: