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

Groovy中匹配动态变化的CD-XX格式字符串并获取最后一个匹配值的问题

Groovy中匹配动态变化的CD-XX格式字符串并获取最后一个匹配值的问题

嘿,你已经把第一个需求搞定得差不多啦,正则匹配CD-加1到两位数字的逻辑没问题!现在咱们来解决剩下的小挑战——当文本里有多个CD-XX格式的内容时,怎么拿到最后一个匹配的值。

你当前的代码里用matches[0]取的是第一个匹配项,所以才会输出CD-12而不是后面的CD-14。Groovy的正则匹配结果(Matcher对象)其实支持直接获取最后一个元素,咱们只需要把取匹配项的方式改一下就行:

修改后的完整代码

def text = "This is my example text and it contains CD-12. Text continues after that. Text also contains CD-14"

def product = "CD-10"

// 匹配CD-后跟1到2位数字的正则
def matches = text =~ "CD-\\d{1,2}"

println "Default product is: CD-10"

if (matches) {
    println "Match was found!"
    // 取最后一个匹配项
    def match = matches.last()
    println "Last match is: " + match
    product = match
    println "Updated product is: " + match
} else {
    println "No match"
    println "Product is the default value: " + product
}

对应的输出结果

当文本里有多个匹配时,输出会变成:

Default product is: CD-10
Match was found!
Last match is: CD-14
Updated product is: CD-14

如果文本里没有任何CD-XX格式的内容,依然会走else分支,输出默认的CD-10,和你之前的逻辑保持一致。

另外再补充个小技巧:如果担心匹配结果为空的情况(不过咱们已经用if (matches)判断过了,所以这里不会有问题),也可以用matches[-1]来取最后一个元素,这是Groovy里列表取倒数第一个元素的语法,和matches.last()效果一样~

备注:内容来源于stack exchange,提问作者jm90

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.17 11:58:09