【问题标题】:Using JSoup to remove only HTML tags and not data within '<' and '>' tags使用 JSoup 仅删除 HTML 标记,而不删除 '<' 和 '>' 标记中的数据
【发布时间】:2015-08-09 11:14:19
【问题描述】:

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

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

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

我用正则表达式也试过了

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

但还是有问题。

&lt;&gt;之间有没有自定义数据解析HTML标签

【问题讨论】:

  • 查看我在 stackoverflow 上找到的 this 答案。希望它能帮助您解决该问题:)

标签: java html regex jsoup


【解决方案1】:

你的正则表达式

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

完全删除标签。它匹配标签开头的。然后它用一个空字符串替换它。

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

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

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

使用 Jsoup 并浏览 DOM 可能会更好。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-10-08
    • 2020-07-23
    • 1970-01-01
    • 2020-05-30
    • 1970-01-01
    • 2013-06-06
    • 2022-10-20
    • 1970-01-01
    相关资源
    最近更新 更多