2016-11-04 3 views
1

나는 문자열과 같이 있습니다 "나는 12이고 나는 ㅋ 15 ㅋ 싶다"난 자바에서 정규식을 사용하여 숫자의 마지막 인스턴스를 추출 할 , 난과 같이 그들 모두를 추출 할 수 있습니다 :자바에서 문자열의 마지막 숫자를 추출하는 방법은 무엇입니까?

Pattern p = Pattern.compile("[0-9]+"); 
     Matcher m = p.matcher(msg); 
     if (m.find()) { 
      System.out.print("Start index: " + m.start()); 
      System.out.print(" End index: " + m.end()); 
      System.out.println(" Found: " + m.group()); 
     } 

그리고 마지막 간격은 그럴 것이지만, 그렇게하는 간단한 방법이 있어야합니다. $와 관련이 있습니까?

답변

4

당신은

(\d+)\D*$ 

a demo on regex101.com를 참조 사용할 수 있습니다. 이되도록 당신이 Java의 표현을 탈출 배가 할 필요가
참고 :

(\\d+)\\D*$ 
+1

패턴은 (소유 한정사를 사용한다을 얻을 "(\ d ++) \ D * + $ ")를 사용하면이 예제의 단계가 76에서 52로 줄어 듭니다. – Nevay

+0

@Nevay : 좋은 지적입니다! https://regex101.com/r/ed4nAi/2 – Jan

1

이 목록을 사용하고 마지막 요소

System.out.println("// TODO Auto-generated method stub"); 
    String msg = "ich hebe 2 LBRs but i need 14 blah blah"; 
    Pattern p = Pattern.compile("[0-9]+"); 
    Matcher m = p.matcher(msg); 
    List<String> allNumericMatches = new ArrayList<String>(); 
    while(m.find()) { 
     System.out.print("Start index: " + m.start()); 
     System.out.print(" End index: " + m.end()); 
     System.out.println(" Found: " + m.group()); 
     allNumericMatches.add(m.group()); 
    } 
    System.out.println(allNumericMatches.get(allNumericMatches.size()-1)); 
관련 문제