2015-12-15 10 views
5

chcę analizować wartości pływaka odJak analizować wartości pływaka z łańcucha przy użyciu regex w java

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

Z powyższego napisu muszę 13.04 i 14.67. Użyłem następujących regex

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

Ale za pomocą tego otrzymuję ".13" ," .04" , "0,14" ," .67" góry dziękuję

+0

Możliwy duplikat [Parse ciągu z regex] (http://stackoverflow.com/questions/1646484/parse-string-with-regex) – Mohit

Odpowiedz

7

Zastosowanie \\d+ zamiast \\d*

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

Dlaczego?

Bo jeśli użyjesz \\d*\\.\\d+, to powinno się zgadzać od kropki istnieje obok Rs, ponieważ wykonałeś część całkowitą, aby powtórzyć zero lub więcej razy., Więc nie dba o część całkowitą.

DEMO

+0

Zobacz również różnice między Java kwantyfikatorów regex, jak udokumentowane w [API] (https://docs.oracle.com/javase/7/docs/api/java/util/regex/Pattern.html). – Mena

+0

To działa dobrze, ale mogę podzielić ten ciąg w imieniu liczb rzeczywistych ex. CallCost: Rs.13.04 Czas trwania: 00: 00: 02: Bal: Rs.14.67 2016 mein Promocja w [ "CallCost: Rs.13.04", "Czas trwania: 00: 00: 02: Bal: Rs.14.67"] –

+0

ale chcesz tylko ekstrakcja .. –