2011-10-13 34 views
7

Bir ifadenin tüm örtüşmelerini, çakışıp çakışmadıklarına bakılmaksızın yakalayacak düzenli bir ifade var mı?Çakışan normal ifadeler döndürme

E.g. / ile başlayan tüm dizeleri yakalamak istiyorum, /abc/def/ghi içinde. Regex (/.*) sadece tüm dizeyi döndürür, ancak /def/ghi ve /ghi'da da eşleşmesini istiyorum.

+0

İlginç konuyu. Sadece emin olmak için, sadece '/ abc','/def' ve '/ ghi' ile eşleştirmek aradığınız şey değil, değil mi? – Arjan

+0

@Arjan no, öyle değil. Bu çok kolay olurdu! (? (/.*) =) –

+1

I 'hile, ayrıca bkz etmez [Çakışan eşleşen]' bulmak [1] [1]: http://stackoverflow.com/q/320448/ 653295 – mousio

cevap

8

Tabii, boş bir dize maç ve bu bir yakalama grubundaki /.* yakalar sonra bir göz yeşil ışık yerleştirin:

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

basacaktır:

/abc/def/ghi 
/def/ghi 
/ghi