2015-12-15 13 views
5

voglio analizzare valori float dacome analizzare valori float dalla stringa utilizzando REGEX in java

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

Da stringa sopra ho bisogno di 13.04 e 14.67. Ho usato seguente espressione regolare

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

Ma usando questo sto ottenendo ".13" ," .04" , "0,14" ," .67" Grazie in anticipo

+0

Eventuali duplicati di [stringa Parse con regex] (http://stackoverflow.com/questions/1646484/parse-string-with-regex) – Mohit

risposta

7

Uso \\d+ invece di \\d*

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

Perché?

Perché se si utilizza \\d*\\.\\d+, questo deve corrispondere dal punto esistente accanto a Rs, poiché la parte intera è stata ripetuta zero o più volte., Quindi non interessa la parte intera.

DEMO

+0

Vedi anche, le differenze tra Java quantificatori regex, come documentato nella [API] (https://docs.oracle.com/javase/7/docs/api/java/util/regex/Pattern.html). – Mena

+0

Funziona bene ma posso dividere questa stringa per conto di valori float ex. CallCost: Rs.13.04 Durata: 00: 00: 02 Bal: Rs.14.67 2016 mein promozione in [ "CallCost: Rs.13.04", "Durata: 00: 00: 02 Bal: Rs.14.67"] –

+0

Ma desideri solo estrazione .. –

Problemi correlati