Подтвердить что ты не робот

Groovy Regex: группа захвата в выводе switch

Учитывая следующий Groovy оператор switch:

def vehicleSelection = "Car Selected: Toyota"

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

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

Можно ли извлечь слово "Toyota" без определения новой (def) переменной?

4b9b3361

Ответ 1

Это возможно с помощью метода lastMatcher, добавленного в Matcher, на Groovy:

import java.util.regex.Matcher

def vehicleSelection = 'Car Selected: Toyota'

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

Ответ 2

Основываясь на ответах 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;
}