2011-11-29 14 views
5

を働いていない私は、いくつかのHTMLにプレーンテキストのURLを解析し、それらを文字列でReplaceAllメソッドが

private String fixLinks(String body) { 
    String regex = "^(https?|ftp|file)://[-a-zA-Z0-9+&@#/%?=~_|!:,.;]*[-a-zA-Z0-9+&@#/%=~_|]"; 
    body = body.replaceAll(regex, "<a href=\"$1\">$1</a>"); 
    Log.d(TAG, body); 
    return body; 
} 

をリンクするために、このメソッドを使用していませURLは、しかし、HTMLに置き換えされていません。正規表現は、他の正規表現テスターで一致するURLのようです。どうしたの?

+1

あなたがHTMLの例スニペットを投稿することができますか?あなたはリンクがすべて行頭にあると確信していますか?空白を許すために、 '^'の後ろに '\ s *'を追加します。 – sarumont

+1

+1正規表現を期待して、それについて混乱していなかったreplaceAllについて質問しています。 – Affe

答えて

8

^アンカーは、正規表現が文字列の先頭にのみ一致することを意味します。削除してください。

$1ではなく、$0のように見えます。最初のキャプチャグループではなく、一致するものがすべて(https?|ftp|file)である必要があります。要約すると

、私のために次のような作品:

private String fixLinks(String body) { 
    String regex = "(https?|ftp|file)://[-a-zA-Z0-9+&@#/%?=~_|!:,.;]*[-a-zA-Z0-9+&@#/%=~_|]"; 
    body = body.replaceAll(regex, "<a href=\"$0\">$0</a>"); 
    Log.d(TAG, body); 
    return body; 
} 
+1

良い目:) +1 ... – FailedDev

+1

魅力のように働いていました。あなたはちょうど橋から飛び降りることから私を救った。 – SeanPONeil

関連する問題