2016-04-06 13 views
0

Regex ile bana yardımcı olabilir misiniz? ardışık noktaları kontrol ileArt arda eşleşen www ve ardışık noktalarla eşleşen URL

"Sites http://www.google.com и www.ridd.rdd..com good." 

Sorun:

Ben çizgi

"Sites www.google.com и www.ridd.rdd..com good." 

ayrıştırma sonra I'v hattının bu tür almak var. Hata içeren sitelere (üst üste iki nokta ile) "http//:" ek eklenmemelidir.

Benim regex: ikinci kötü "URL", www.ridd.rdd ..com bir bölümüyle eşleşmesi w{3}(\\.\\w+)+[a-z]{2,6}

Matcher matchr = Pattern.compile("w{3}(\\.\\w+)+[a-z]{2,6}").matcher(text); 

     while (matchr.find()) { 
      text = text.replace(matchr.group(0), "http://" + matchr.group(0)); 
     } 

     System.out.println(text); 
+1

http://stackoverflow.com/questions/27745/getting-parts-of-a-url-regex –

+1

Егор, sadece '+' \\ 'sonra ekleyin.'. –

+0

Tüm URL dizelerinin başına "http: //" eklemeye mi çalışıyorsunuz? – jazibobs

cevap

1

Sizin düzenli ifade. Bu nedenle, eşleştirdiğiniz alt dizinin ardışık nokta içermediğinden emin olmanız gerekir. Kelime sınırlarını ve (?!\S*\.{2}) negatif bir görünüm kullanabilirsiniz.

Kullanım

String text = "Sites www.google.com и www.ridd.rdd..com good."; 
text = text.replaceAll("\\b(?!\\S*\\.{2})w{3}(\\.\\w+)+[a-z]{2,6}\\b", "http://$0"); 
// => Sites http://www.google.com и www.ridd.rdd..com good. 

IDEONE demo

Desen açıklamaya bakın:

  • \\b - Kelime sınırı lider
  • (?!\\S*\\.{2}) - olmayan boşluk herhangi ardışık noktalar olmamalı takip edilecek övgü
  • w{3} - maç www
  • (\\.\\w+)+ - ... 2 6-a-z harf olduğuna dikkat edin
  • \\b - - . 1+ dizileri
  • [a-z]{2,6} 1+ alfanümerik veya alt çizgi karakterleri ile takip sonunda Bu "kelime"
+0

Detaylı açıklama için teşekkürler) –

+0

Yardımınız için mutluyuz, sizin için çalıştığından beri cevabı kabul etmeyi düşünün. –

İlgili konular