使用JSoup仅删除HTML标记而不删除'<&#;和'>'标签

时间:2015-05-27 11:34:02

标签: java html regex jsoup

我使用JSoup将包含HTML标记的字符串解析为纯文本。例如:

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

它解析得非常好,但问题是我的Java字符串是否包含<>之间的数据,例如Hello <test@gmail.com>所以它正在删除电子邮件地址数据。我得到的输出是 Hello ,我期待Hello <test@gmail.com>

我用正则表达式尝试了它,就像

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

但还是有问题。

无论如何要在<>之间解析没有自定义数据的HTML代码

1 个答案:

答案 0 :(得分:2)

你的正则表达式

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

完全删除标记。它匹配&lt;的开头。在标签的开头,标签的标签,标签的任何属性和最终的&gt;。然后用空字符串替换它。

erCount

应使用标签和标签的任何属性替换所有标签。这大致与正则表达式相同,但它将替换匹配括号内的文本。

请注意,这会删除上下文,因此它可能不是一个好的解决方案。它也不会产生易于阅读的输出,因为部分保留了有效的html。

最好继续使用Jsoup并导航DOM。