2015-05-27 72 views
0

我使用JSoup來解析包含HTML標籤的字符串爲純文本。例如:使用JSoup只刪除HTML標籤,而不是'<' and '>'標籤內的數據標籤

String newStr = Jsoup.parse(testStrHTML).text(); 

據分析得很好,但問題是,如果我的Java字符串包含<>用於例如之間的數據Hello <[email protected]>所以它是刪除電子郵件地址數據。輸出我得到的是你好,我期待Hello <[email protected]>

我與正則表達式試了一下,以及像

String newStr = testStrHTML.replaceAll("\\<.*?\\>", ""); 

但還是問題。

反正是有解析HTML代碼,而無需自定義數據<>

+0

檢出[this](http://stackoverflow.com/a/21278906/1785341)回答我在stackoverflow上找到了。希望它會幫助你解決這個問題:) – brannmar

回答

2

你的正則表達式

String newStr = testStrHTML.replaceAll("\\<.*?\\>", ""); 

之間完全地去除標籤。它與標籤開頭的<開頭,標籤標籤,標籤的任何屬性以及最終的>相匹配。然後它用空字符串替換它。

String newStr = testStrHTML.replaceAll("\\<.([^>]*)\\>", "\\1"); 

應該用標籤和標籤的任何屬性替換所有標籤。這與您的正則表達式大致相同,但它會將括號內的文字替換爲匹配。

請注意,這會刪除上下文,因此它可能不是一個好的解決方案。它也不會產生易讀的輸出,因爲部分保留了有效的html。

使用Jsoup並導航DOM可能會更好。