2016-04-06 5 views
0

正規表現を教えてもらえますか?連続する点をチェックしてURLとwwwと連続するドットが一致する正規表現

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

問題:

は私がライン

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

を解析した後I'vはラインのこのタイプを取得しています。 エラーのあるサイト(行が2つ)"http//:"には、を付けないでください。

私の正規表現:秒悪い "URL"、www.ridd.rdd ..comの一部と一致する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

Егорは、ちょうど '+' \\ '後に追加します。'。 –

+0

すべてのURL文字列の先頭に "http://"を追加しようとしていますか? – jazibobs

答えて

1

あなたの正規表現。したがって、一致する部分文字列に連続するドットがないことを確認する必要があります。単語境界と否定的な先読みを使用することがあります(?!\S*\.{2})

使用

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

パターンの説明を参照してください:

  • \\b - 大手ワード境界
  • (?!\\S*\\.{2}) - 非空白の任意の連続したドットがあってはならないが次のチャンク
  • w{3} - 試合www
  • (\\.\\w+)+ - ... 2 6からa-z文字があることを確認してください
  • \\bを - - .の1+シーケンスは
  • [a-z]{2,6} 1+英数字またはアンダースコア文字で、その後の終わりにこの "言葉"
+0

詳細な説明をありがとう) –

+0

喜んで助けてくれて、それはあなたのために働いて以来、答えを受け入れることを検討してください。 –