2016-11-04 806 views
1

我有一個字符串,像這樣: 「我是12,我想15等等等等」 我想提取僅在Java中使用正則表達式數字的最後一個實例,我可以提取所有的人都像這樣:如何在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)); 
相關問題