Tôi đã hỏi câu hỏi này trước đó và nó đã bị đóng vì đó là một bản sao, mà tôi chấp nhận và thực sự tìm thấy câu trả lời trong câu hỏi Java: splitting a comma-separated string but ignoring commas in quotes, vì vậy nhờ bất kỳ ai được đăng nó.Tách một chuỗi trên dấu phẩy không có trong dấu ngoặc kép với một twist
Nhưng tôi đã gặp phải sự cố khác. Rõ ràng những gì tôi cần làm là sử dụng "," như dấu phân cách của tôi khi có số không hoặc thậm chí một số dấu ngoặc kép, nhưng cũng bỏ qua bất kỳ "," chứa trong dấu ngoặc đơn.
Vì vậy, như sau:
"Thanks,", "in advance,", "for("the", "help")"
Sẽ tokenize như:
- Cảm ơn,
- trước,
- cho ("the", "giúp đỡ")
Tôi không chắc chắn liệu có chỉnh sửa regex hiện tại hay không đang sử dụng để cho phép điều này, nhưng bất kỳ hướng dẫn nào cũng sẽ được đánh giá cao.
line.split(",(?=([^\"]*\"[^\"]*\")*[^\"]*$)");
Kết quả mong muốn là gì? – DOK
Bạn nên sử dụng trình phân tích cú pháp CSV thực để xử lý sự lộn xộn đó. Không ** mọi vấn đề phân tích cú pháp ** đều được xử lý tốt nhất với các regex. –
@Joachim, Bạn biết bao nhiêu trình phân tích cú pháp CSV có thể xử lý các dấu ngoặc kép, dấu ngoặc bên trong, dấu ngoặc kép bên trong theo cách mà anh ta muốn? –