繁体   English   中英

使用JSoup仅除去HTML标签,而不除去'<'和'>'标签内的数据

[英]Using JSoup to remove only HTML tags and not data within '<' and '>' tags

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

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

它的解析效果很好,但是问题是我的Java字符串是否包含<>之间的数据(例如Hello <test@gmail.com>因此它正在删除电子邮件地址数据。 我得到的输出是Hello ,我期望在其中Hello <test@gmail.com>

我也尝试过使用正则表达式

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

但是仍然有问题。

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

您的正则表达式

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

完全删除标签。 它与<的开头,标签的开头,标签的标签,标签的所有属性以及最后的>匹配。 然后将其替换为空字符串。

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

应将所有标签替换为标签和标签的所有属性。 这与您的regexp大致匹配,但是用括号内的文本替换了匹配项。

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

最好还是使用Jsoup并浏览DOM。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM