groovy 如何定义字符串的正则表达式来分隔键,值对

u0sqgete  于 2023-06-21  发布在  其他
关注(0)|答案(1)|浏览(115)

我试图在groovy中将一个字符串划分为key:value对,但由于我的key有多个值,所以我无法获得正确的结果。它只打印第一个值
我在下面试

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 

}

当我打印键和值时,我只是没有得到正确的结果。我想把每个键,值对像

key1:value1,value2
key2:value1,value2
key3:value1

在Groovy中还有其他方法吗?

iecba09b

iecba09b1#

你可以使用这个:

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]}"
}

哪些打印:

key1 maps to value1,value2
key2 maps to value1,value2,value3
key3 maps to value1

相关问题