2011-10-13 33 views
7

Có một cụm từ thông dụng sẽ ghi lại tất cả các phiên bản của một biểu thức, bất kể chúng có trùng lặp hay không?Trả về các cụm từ thông dụng chồng chéo

Ví dụ: trong /abc/def/ghi nếu tôi muốn chụp tất cả các chuỗi bắt đầu bằng /. Chỉ số regex (/.*) chỉ trả về toàn bộ chuỗi, nhưng tôi cũng muốn nó khớp trên /def/ghi/ghi.

+0

Thú vị chuyên môn. Chỉ cần chắc chắn, chỉ khớp '/ abc','/def' và '/ ghi' không phải là thứ bạn đang tìm kiếm, phải không? – Arjan

+0

@Arjan no, không phải vậy. Đó sẽ là quá dễ dàng! –

+1

Tôi thấy rằng '' không lừa, xem thêm [chồng chéo phù hợp] [1] [1] (= (/.*)?): Http://stackoverflow.com/q/320448/ 653295 – mousio

Trả lời

8

Chắc chắn, phù hợp với một chuỗi rỗng và đặt một cái nhìn về phía trước sau khi nó để chụp /.* trong một nhóm chụp:

Matcher m = Pattern.compile("(?=(/.*))").matcher("/abc/def/ghi"); 
while(m.find()) { 
    System.out.println(m.group(1)); 
} 

sẽ in:

/abc/def/ghi 
/def/ghi 
/ghi 
Các vấn đề liên quan