2015-12-15 17 views
5

Tôi muốn phân tích giá trị float từLàm thế nào để phân tích giá trị float từ chuỗi sử dụng regex trong java

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

Từ chuỗi ở trên tôi cần 13,04 và 14,67. Tôi đã sử dụng sau regex

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

Nhưng sử dụng này tôi đang nhận được ".13" ," 0,04" , ".14" ," 0,67" Cảm ơn trước

+0

có thể trùng lặp của [chuỗi Parse với regex] (http://stackoverflow.com/questions/1646484/parse-string-with-regex) – Mohit

Trả lời

7

Sử dụng \\d+ thay vì \\d*

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

Tại sao?

Bởi vì nếu bạn sử dụng \\d*\\.\\d+, điều này phải khớp với dấu chấm tồn tại bên cạnh Rs, vì bạn đã thực hiện phần nguyên để lặp lại 0 hoặc nhiều lần, nên không quan tâm đến phần nguyên.

DEMO

+0

Xem thêm, sự khác nhau giữa quantifiers regex Java, như được ghi lại trong [API] (https://docs.oracle.com/javase/7/docs/api/java/util/regex/Pattern.html). – Mena

+0

Nó hoạt động tốt nhưng tôi có thể chia chuỗi này thay mặt cho các giá trị float ex. CallCost: Rs.13.04 Thời gian: 00: 00: 02 Bal: Rs.14.67 2016 mein Khuyến mại vào ["CallCost: Rs.13.04", "Thời lượng: 00: 00: 02 Bal: Rs.14.67"] –

+0

Nhưng bạn chỉ muốn khai thác .. –

Các vấn đề liên quan