Tôi đang phân tích các bảng dụ AWS
chi phí sau:Phân tích một bảng sử dụng regex - Java
m1.small 1 1 1.7 1 x 160 $0.044 per Hour
m1.medium 1 2 3.75 1 x 410 $0.087 per Hour
m1.large 2 4 7.5 2 x 420 $0.175 per Hour
m1.xlarge 4 8 15 4 x 420 $0.35 per Hour
Có một tập tin với những chi phí:
input = new Scanner(file);
String[] values;
while (input.hasNextLine()) {
String line = input.nextLine();
values = line.split("\\s+"); // <-- not what I want...
for (String v : values)
System.out.println(v);
}
Tuy nhiên điều đó mang lại cho tôi:
m1.small
1
1
1.7
1
x
160
$0.044
per
Hour
đó không phải là những gì tôi muốn ... Đã sửa lỗi được phân tích values
(với đúng regex) sẽ xem ike này:
['m1.small', '1', '1', '1.7', '1 x 160', '$0.044', 'per Hour']
Điều gì sẽ là đúng regex
để có được kết quả phù hợp? Người ta có thể giả định rằng bảng sẽ luôn có cùng một mẫu.
Dữ liệu thực tế có được phân tách bằng tab không? Có thể có các trường hợp các cột chỉ được phân tách bằng một dấu cách không? – Pietu1998
@ Pietu1998 Chủ yếu là ... nhưng không nhất thiết ... regex sẽ tạo ra thứ gì đó mạnh mẽ hơn ... đó là lý do tại sao tôi không di chuyển để phân tích cú pháp với '\\ t +'. Các tệp đó rất lớn, do đó, có thể tìm kiếm các tệp đó vô nghĩa để sửa một tab bị thiếu. – cybertextron
Bạn có thể sử dụng '\\ s {2,}' không? –