Làm cách nào để giải quyết vấn đề regex Java này?Regex: Làm thế nào để nắm bắt điều này? (một nhóm lồng nhau bên trong một nhóm lặp lại)
Input:
some heading text... ["fds afsa","fwr23423","42df f","1a_4([email protected]#","3240acg!g"] some trailing text....
Vấn đề: Tôi muốn nắm bắt tất cả mọi thứ giữa dấu ngoặc kép. (Ví dụ: FDS afsa, fwr23423, vv)
Tôi đã thử các mô hình sau:
\[(?:"([^"]+)",?)+\]
Nhưng khi thực hiện một Matcher.find(), nó sẽ gây ra một StackOverflowError, khi sử dụng một đầu vào lớn hơn (nhưng làm việc cho một đầu vào nhỏ, đây là một lỗi trong Java). Và ngay cả khi nó đã làm việc, sau đó matcher.group (1) sẽ chỉ cung cấp cho "3240acg! G".
Tôi làm cách nào để giải quyết vấn đề này? (Hoặc là sử dụng nhiều mẫu bắt buộc, trong đó mẫu đầu tiên tách các dấu ngoặc vuông?)
Vì vậy, cần có nhiều mẫu/kết quả phù hợp. Tôi tìm thấy một cái gì đó tương tự ở đây: http://answers.oreilly.com/topic/222-how-to-find-a-match-within-another-match-in-a-regular-expression/ – Devabc
Vâng, OK, có là một cách khác, nhưng tôi không nghĩ đó là một cách tốt. Tôi đã thêm nó vào câu trả lời của tôi. –