2015-12-15 64 views
5

使用正則表達式我想從如何從字符串中的Java

CallCost:Rs.13.04 Duration:00:00:02 Bal:Rs.14.67 2016 mein Promotion 

解析浮點值從上面的字符串,我需要13.04和14.67解析浮點值。我提前用以下的正則表達式

Pattern p = Pattern.compile("\\d*\\.\\d+"); 
    Matcher m = p.matcher(s); 
    while (m.find()) { 
    System.out.println(">> " + m.group()); 
      } 

但是使用這個我得到。「13" ,」 0.04" ,。「14" ,」 0.67" 感謝

+0

[與正則表達式解析字符串](http://stackoverflow.com/questions/1646484/parse-string-with-regex) – Mohit

回答

7

使用\\d+代替\\d*

Pattern p = Pattern.compile("\\d+\\.\\d+"); 

爲什麼?

因爲如果你使用\\d*\\.\\d+,這應該匹配從Rs旁邊的點存在,因爲你讓整數部分重複零次或多次,所以它不關心整數部分。

DEMO

+0

參見,爪哇正則表達式量詞之間的差異,作爲可能的複製記錄在[API](https://docs.oracle.com/javase/7/docs/api/java/util/regex/Pattern.html)中。 – Mena

+0

它工作正常,但我可以分裂這個字符串代表浮動值前。 CallCost:Rs.13.04持續時間:00:00:02 Bal:Rs.14.67 2016 mein促銷到[「CallCost:Rs.13.04」,「持續時間:00:00:02 Bal:Rs.14.67」] –

+0

但是,您只需要提取.. –