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
) переменной?
Ответы
Ответ 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;
}