I am trying to divide a string into key:value pair in groovy but since my key has multiple values i am not able to acheieve the right result . It just prints the first value
I am trying below
def keyValueString = "key1:value1,value2,key2:value1,value2,value3,key3:value1"
def regex = /([^:,]+):((?:[^:,]+(?:,(?![:]))?)+)/
def matcher = keyValueString =~ regex
matcher.each { match ->
def key = match[1]
def value = match[2]
println key
println value
}
when i print the key and value i only don't get the right results. I want to separate each key,value pair like
key1:value1,value2
key2:value1,value2
key3:value1
is there another way to do this in groovy ?
You could maybe use this:
def keyValueString = "key1:value1,value2,key2:value1,value2,value3,key3:value1"
def regex = /((.+?):([^:]+)(?:,|$))/
def matcher = keyValueString =~ regex
matcher.each { match ->
println "${match[2]} maps to ${match[3]}"
}
Which prints:
key1 maps to value1,value2
key2 maps to value1,value2,value3
key3 maps to value1