解析以逗号

时间:2018-04-04 20:26:58

标签: regex go

所以我有这个正则表达式:

=([0-9A-Za-z_-]+),?

我需要一个像:

这样的字符串
foo=bar,pine=apple,tree,bar=bie
or
foo=bar,pine=apple,tree
or 
pine=apple,tree

正则表达式适用于我只有1个值的情况。 但是因为我们在密钥的值列表中有逗号。 正则表达式刚刚解决,我的代码完成了我想要它做的一半,但没有获得第二个值。

如何修复我的正则表达式以获取两个值,无论它在字符串中的哪个位置? 最后,在另外两个人之间。

我尝试了一些东西,但无法理解。

尝试1:

=([0-9A-Za-z,_-]+),=?

在这种情况下,它匹配中间的那个,但是在其他情况下失败,因为=不存在。

尝试2:

=[0-9A-Za-z_-]+([,]+[0-9A-Za-z_-]*),?

匹配酒吧,松树和树,例如酒吧

EDIT ::

这似乎也许有用......

=('[0-9A-Za-z,_-]+'),*|=([0-9A-Za-z_-]+),*

如果我使用多值的引号..

1 个答案:

答案 0 :(得分:1)

您可以拆分变量名称 - 只留下值:

s := regexp.MustCompile("[^,\\s]+=").Split("foo=bar,pine=apple,tree,bar=bie", -1)
fmt.Println(s)
# => [ "bar", "apple,tree", "bie"] 

Go Demo

Regex Demo