2012-03-22 8 views
0

誰でも簡単なプレーンテキストのハイパーリンクをjavaのHTMLハイパーリンクに簡単に変換するために、以下の正規表現を改善する方法についてアドバイスできますか?それだけでだけではなく、これらの特殊文字をチェックする間隔なしに添付のテキストと一緒にhttpまたはhttpsで見つかったテキストを変換するかどうかを確認することが可能である場合 プレーンテキストのハイパーリンクをjavaのHTMLハイパーリンクに変換するにはどうすればよいですか?

message = message.replaceAll("(?:https?|http?)://[\\w/%.\\-?&=!#]+(?!.*\\[/)", 
"$0"); 

は、実際に私は疑問に思って。

プレーンテキストのハイパーリンクをHTMLハイパーリンクに簡単に変換できるウェブサイトのテキストエリアがいくつか見受けられました。しかし、私はstackoverflowを研究していて、私は本当にこの問題について完全な答えを見つけませんでした。

私は、Javaの正規表現がリンクを自動的に検出してクリック可能なHTMLハイパーリンクに変換できるようにしたいと考えています。 http://www.google.comを想定し

|http://naishe.blogspot.com| 
|http://tw.com/#!/someTEXTs| 
|http://ts123t1.rapi.com/#!download|13321|1313|fairy_tale.mp4| 
|http://www.google.com| 
|https://www.google.com| 
|google.com| 
|google.com| 
|google.com/test| 
|123.com/test| 
|ex-ample.com| 
|http://ex-ample.com/test-url_chars?param1=val1&;par2=val+with%20spaces| 
https://www.google.com.sg/#hl=en&output=search&sclient=psy-ab&q=test&oq=&aq=&aqi=&aql=&gs_sm=&gs_upl=&gs_l=&psj=1&fp=1&biw=1366&bih=638&bav=on.2,or.r_ gc.r_pw.r_qf.,cf.osb&cad=b 
+0

パイプ( '|')はリンク定義の一部ですか?もしそうでなければ、どんなプログラムが 'google.com'が何らかのテキストだけでなくリンクであることをどのように知るべきですか?キーかそれとも? - そしてそれらをHTMLリンクに変換するとどういう意味ですか?あなたは 'http://www.google.com - >http://www.google.com'を意味しますか?もしそうなら、リンクを検出する以外にどこに問題がありますか? – Thomas

+0

私の質問のコードテキストを検討してください。ユーザーが入力したテキストの一部になる可能性があります。つまり、httpまたはhttpsで始まるテキストの内容は、 html形式のハイパーリンクに自動的に変換されます。 – dfdf

答えて

3

はリンクとして識別されなければならないが、www.google.comませんが、あなたはこのような何か使用することができます

String htmlLink = link.replaceAll("(?:https|http)://([\\w/%.\\-?&=!#]+(?!.*\\[/))", 
            "<a href=\"$0\">$1</a>"); 

出力:

http://www.google.com -> <a href="http://www.google.com">www.google.com</a> 
www.google.com -> www.google.com 

編集

を可能かもしれないこのような何かに式を簡素化するために:

String pattern = "(?:https|http)://([^\\s\\|]+)"; 

をこの式は://によってhttpまたは続いhttpsで始まるものと空白やパイプでない1文字以上の文字列にマッチします。許可されてはならない他の文字がある場合(その仕様はチェックしていません)、括弧で囲んで指定してください([^]]の間)。

+0

正規表現はどのように正確に動作するのか説明できますか? – dfdf

+0

@dfdfそれは基本的に '?'が 'https'と' http'の後に削除され、さらに '://'部分の後に追加の捕捉グループ(したがって '$ 1')があります。 – Thomas