2013-03-26 31 views
5

Şu anda Java'da regex uygulaıyorum ve dizelerde yinelenen kelimeleri bulmaya çalışıyorum. 'Bu harika.' Gibi bir dize girdiysem. \\b(\\w+) \\1\\b kullanıyordum, ancak bu yalnızca bir 'dizedeki' bu 'gibi iki yinelenen kelimeyi tanır.Bir dize içinde yinelenen sözcükleri bulma regex C/W

Bu konuda herhangi bir yardım almak için?

+0

Bunun için neden düzenli ifadeyi kullanmak istersiniz? Sadece split kullanarak bir String dizisine dönüştürebilir ve daha sonra yinelenen kelimeleri bulmak için birçok seçenek vardır –

+0

Gerçekten sadece regex içinde _dabble_ için yalvarıyorsanız, bu muhtemelen başlamak için bir yer çok karmaşıktır. regex'in muhtemelen iş için yanlış bir araç olduğu gerçeğinden bahsedin. Bu basit dize yöntemleri ile çok daha ** daha kolay olurdu. – jahroy

+0

Daha önce söylemeliydim, ama kolej/üniversite kurumu için bu regex örneklerini yapıyorum ve bu örnek kalan tek şey. Saatlerce üzerinde güldüm! –

cevap

2

"görmezden durum" senin regex için (?i) geçiş ekle: String.matches() kullanıyorsanız: Alternatif

(?i)\\b(\\w+) \\1\\b 

, önce küçük harf girişi katlanabilirler:

input.toLowerCase() 

Not

: Eğer regex her iki ucuna .* eklersiniz böylece normal ifade, tüm girişi aynı olmalıdır
+0

Bu benim için işe yaramadı, iki kelimeyle yan yana çalışıyor. Ama 'Bu işe yaramıyor' değil. –

+0

Bu kelimeler yan yana ;-) – jahroy

+0

Bunu anlıyorum: P, bir dizede ikiden fazla sözcük kullandığımda, her iki kelimenin (birbirinin yanında olan) aynı sözcük olduğunu anlamaz. –

1
String pattern = "\\b(\\w+)(\\b\\W+\\b\\1\\b)*"; 
Pattern r = Pattern.compile(pattern, Pattern.CASE_INSENSITIVE); 

Bu yaklaşımla tüm yinelenen sözcüklerin yerine Matcher.group() ve Matcher.group(1) kullanabilirsiniz.