You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Groovy中如何用正则拆分含多值的键值对?

在Groovy中拆分含多值的键值对字符串

你的正则表达式因匹配逻辑问题,无法正确捕获键对应的所有值。这里提供两种可行的实现方法:

方法一:修正正则表达式

通过正向前瞻精准匹配每个键对应的所有值,直到下一个键的开头或字符串结尾:

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 values = match[2]
    println "$key:$values"
}

正则说明:(?=,[^:,]+:|$)是正向前瞻断言,确保捕获的内容后接下一个键(,key:格式)或字符串结尾,从而完整获取当前键的所有值。

方法二:分步拆分(更易读)

先拆分出独立的键值对单元,再分别提取键和值,逻辑更直观:

def keyValueString = "key1:value1,value2,key2:value1,value2,value3,key3:value1"
// 按"key:"模式前的位置拆分,得到单个键值对单元
def keyValuePairs = keyValueString.split(/(?=[^:,]+:)/)

keyValuePairs.each { pair ->
    if (pair) {
        // 仅按第一个冒号拆分,避免值中含冒号时出错
        def (key, values) = pair.split(':', 2)
        println "$key:$values"
    }
}

内容的提问来源于stack exchange,提问作者jarvis_max

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 20:18:24