2012-02-17 28 views
0

HTMLタグを持つサーバーから文字列を受信して​​います。 string1.replaceAll("\\<.*?>","")のような正規表現を使用してこれらのタグを削除していますが、改行やハイパーリンクも削除されるという問題があります。私は、ハイパーリンクや改行を保持し、他のすべてを削除したい。改行を除くHTMLタグの削除

答えて

4

HTMLの解析にregexpsを使用しないでください。 HTML(ない何を望んでいたが、やるのは簡単)から完全に取り除くために

のみ<a>(およびhref属性)を保持、選択的にそれを取り除くために

String html = "<h1>I only want<br/>line breaks and " + 
    "<a href='http://stackoverflow.com'>links</a>, <i>not</i>" + 
    " the <b>other</b> stuff"; 
String sansHtml = Html.fromHtml(html).toString(); 

と私が提案する<br>タグあなたはJSoupを使用します。

Whitelist whitelist = Whitelist.none().addTags("a", "br").addAttributes("a", "href"); 
String jsoupHtml = Jsoup.clean(html, whitelist); 
1

あなたが最初のいくつかの中間フォーマットで保存しておきたい部品を交換しようと、元の1 AFTEを復元することができr他のタグはすべて削除しました。

string1.replaceAll("\\<br.*?>", "[br]"); 
string1.replaceAll("\\<a href='(.*?)'.*?>(.*?)\\<.*?>", "[link='$1' desc='$2']"); 
string1.replaceAll("\\<.*?>",""); 
string1.replaceAll("\\[br\\]", "<br\\>"); 
string1.replaceAll("\\[link='(.*?)' desc='(.*?)']", "<a href=\"$1\">$2<\\a>"); 

それは:)

+0

を動作しない可能性がありますので、テストされていないコード[これは常に、関連する感じ](http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-自己完結型タグ/ 1732454#1732454)がXML/HTMLを処理するための正規表現を書き出したときに発生します。 – Jens

+0

正規表現解析は、すべての野生のxml/htmlファイルでは機能しません。ファイルが既知の構文である場合にのみ、確実に動作します。 – zapl