我正在從具有HTML標記的服務器接收字符串。我正在使用像string1.replaceAll("\\<.*?>","")
這樣的正則表達式去除這些標籤,但問題是它也會刪除換行符和超鏈接。我想保留超鏈接和換行符,並刪除其他所有內容。刪除除換行符外的HTML標記
0
A
回答
4
不要使用正則表達式來解析HTML。
從HTML完全剝離(您想不是,但簡單的事):
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();
要選擇剝離它,護只有<a>
(和href
屬性)和<br>
標籤建議您使用JSoup:
Whitelist whitelist = Whitelist.none().addTags("a", "br").addAttributes("a", "href");
String jsoupHtml = Jsoup.clean(html, whitelist);
1
你可以試着更換你想通過一些中間格式,以保持第一部分,恢復原來的AFTE你刪除了所有其他標籤。
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>");
未測試的代碼,因此可能無法正常工作:)
相關問題
- 1. HTML標記替換/刪除
- 2. 刪除除標記外的所有html標記
- 3. PHP結束標記刪除換行符
- 4. 刪除標記之間的換行符在HTML中python3
- 5. 如何刪除所有換行符在html標籤之外
- 6. php html從元描述標記中刪除換行符
- 7. 刪除Html實體或替換標記
- 8. 從字符串中刪除html標記
- 9. 從字符串中刪除html標記
- 10. Рhppreg_replace - 刪除除html標記以外的所有文本IMG
- 11. 從asp.net中刪除除<a>之外的html標記
- 12. SED刪除除鏈接以外的所有HTML標記
- 13. PHP JSON刪除HTML標記
- 14. 刪除HTML標記+內容
- 15. 刪除HTML標記與JavaScript
- 16. jQuery的刪除標記符
- 17. 刪除標記時刪除標記
- 18. 去除除錨定標記之外的所有HTML標記
- 19. 刪除換行符
- 20. 刪除換行符
- 21. 刪除換行符
- 22. 在html中的img標記後刪除換行
- 23. Netbeans - 在jsp/html中刪除額外的換行符
- 24. 從記錄中刪除換行符
- 25. HTML發佈刪除換行符
- 26. PHP標記刪除文檔中的最後一個換行符
- 27. 刪除html標籤之間的換行符
- 28. 的Android刪除換行符
- 29. 刪除換行符的CakePHP
- 30. VBA從字符串中刪除HTML標記僅刪除第一個字符
[這總是感覺有關(http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml- self-contained-tags/1732454#1732454)當人們用正則表達式來處理XML/HTML時。 – Jens 2012-02-17 12:36:38
確實,正則表達式解析不適用於每個out-in-the-wild-xml/html文件。只有文件具有已知的語法時,它才能可靠地工作。 – zapl 2012-02-17 14:07:32