Tôi mới sử dụng mã hóa Android, nhưng tôi có kinh nghiệm với Perex regex. tôi cần phải phù hợp với một danh sách từ 0 hoặc nhiều định danh với một biểu thức chính quy như:Tham chiếu đến các nhóm phù hợp trước đó trong một regex
^\s*((\w\d\d\d)(\s+$2)*)?$
Note $ 2 đề cập đến nhóm phù hợp trước đó (\ w \ d \ d \ d) Đối với mã android nó sẽ trông giống như:
Pattern.compile("^\\s*((\\w\\d\\d\\d)(\\s+\$2)*)?$")
biên dịch Eclipse không biên dịch \ $ 2, tôi cũng \ 2 cố gắng, mà biên dịch nhưng cố gắng để phù hợp với một số chữ 2.
giải pháp brute force sẽ được lặp lại các định danh mẫu:
Pattern.compile("^\\s*((\\w\\d\\d\\d)(\\s+(\\w\\d\\d\\d))*)?$")
Nó hoạt động, nhưng nó có những nhược điểm sau: * Nó rất dễ dàng để thực hiện một lỗi cú pháp trong hoặc lặp lại * như nhận diện phức tạp hơn chuỗi được lớn * nó không phải là thanh lịch * trở nên phức tạp hơn nhiều nếu bạn cần tham khảo không một nhưng một số kết quả phù hợp trước đó là
Có cách nào trong Java để chỉ các nhóm phù hợp trước đó trong regex không?
bạn đã thử 'Pattern.compile ("^\\ s * ((\\ w \\ d \\ d \\ d) (\\ s + \\ 2) *)? $ ")' Tôi nghĩ phản hồi là \ N trong đó N là nhóm của bạn. Mặc dù bạn phải gạch chéo ngược dấu gạch chéo ngược với '\\ N' –
Có, tôi có, nó sẽ lấy \\ 2 như một chữ số 2 (tôi quên để tăng gấp đôi dấu gạch chéo ngược trong bài gốc, nhưng đây là những gì tôi có nghĩa là). – ilomambo