2016-11-04 10 views
1

私はそうのような文字列を持っている: 私はJavaで正規表現を使用して数字の最後のインスタンスのみを抽出したい、私はそうのようにそれらのすべてを抽出することができ 「私は12だと私は15何とか何とかしたい」:javaの文字列の最後の数字を抽出するには?

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)); 
関連する問題