Groovy Regex:Switch语句中的Capture组

时间:2012-10-17 15:10:25

标签: regex groovy

给出以下Groovy代码切换语句:

def vehicleSelection = "Car Selected: Toyota"

switch (vehicleSelection) {
   case ~/Car Selected: (.*)/:

      println "The car model selected is "  + ??[0][1] 
}

是否可以在没有定义新(def)变量的情况下提取“Toyota”这个词?

2 个答案:

答案 0 :(得分:33)

使用Groovy添加到lastMatcher的{​​{1}}方法可以实现这一点:

Matcher

答案 1 :(得分:5)

在tim_yates的基础上建立对我真有帮助的答案:

如果你想在代码中避免使用一堆“Matcher.lastMatcher”,你可以创建一个辅助函数来充当别名。

import java.util.regex.Matcher

static Matcher getm()
{
    Matcher.lastMatcher
}

def vehicleSelection = 'Car Selected: Toyota'

switch( vehicleSelection ) {
    case ~/Car Selected: (.*)/: 
        println "The car model selected is ${m[0][1]}"
     break;
}