2012-10-17 3 views
18

에서 캡처 그룹 :그루비 정규식 다음 그루비 코드 스위치 문을 감안할 때 스위치 문

def vehicleSelection = "Car Selected: Toyota" 

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

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

그것이 새로운 (def) 변수를 정의하지 않고 단어 "도요타"를 추출 할 수 있습니까? tim_yates에

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]}" 
} 

답변

27

이 그루비로 Matcher에 추가 lastMatcher 방법을 사용하여 가능하다

당신이 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; 
} 
+0

나는 여전히 m을 선언해야합니다. Perl의'$ _'와 같은 것이 있는지 궁금합니다. 이것이 Groovy의 제한이라면 어쩌면'def'를 사용해도 괜찮습니다. – Reimeus

+0

@Reimeus 다른 방법으로 찾아 냈습니다! 대답 바꾸기 ... –

+0

이것은 내가 찾고있는 것입니다. 감사! – Reimeus

3

건물이 나를 위해 정말 도움이되었다 답변 :