为了账号安全,请及时绑定邮箱和手机立即绑定

Sting builder - 删除除 <br> 之外的所有 html 标签

Sting builder - 删除除 <br> 之外的所有 html 标签

森林海 2022-06-23 15:50:17
我有一个字符串生成器对象“sb”,它看起来像 -Hello.  How can I help you?<br>I don't know<br>Use the link <a href="www.google.com" target="_blank">Google</a><br>这只是一个示例,它可以有任何类型的 html 标签。如何从对象中删除除 br 标记之外的所有可能的 HTML 标记。我一直在尝试使用下面的代码从 sb 对象中删除所有 html 标签,但它似乎不起作用。另外,不确定如何为 br 标签设置例外。sb.replaceAll("<.*?>", "");
查看完整描述

2 回答

?
拉风的咖菲猫

TA贡献1995条经验 获得超2个赞

众所周知,如果您尝试捕获完整的标签数据并尝试对其进行操作,强烈建议不要使用正则表达式解析 HTML。但是如果你只是想去掉所有标签,或者有条件地去掉一些标签,比如在这种情况下,你想删除除标签之外的所有<br>标签,你可以使用这个正则表达式,

<\/?(?!br>)\w+[^>]*>

解释:

  • <- 匹配标签的开始

  • \/?- 可选地匹配/匹配的结束标签

  • (?!br>)- 如果标签名称是,则拒绝匹配br

  • \w+- 匹配任何由单词字符组成的标签名称

  • [^>]*- 可选地允许标签属性匹配

  • >- 匹配关闭标签

示例 Java 代码,


String s = "Hello.  How can I help you?<br>I don't know<br>Use the link <a \r\n" + 

        "href=\"www.google.com\" target=\"_blank\">Google</a></br>Hello.  <sometag>somedata</sometag> hey <br1>somedata</br2> hello <1br>somedata</1br> How can I help you?<br>I don't know<br>Use the link <a \r\n" + 

        "href=\"www.google.com\" target=\"_blank\">Google</a></br>";


System.out.println(s.replaceAll("</?(?!br>)\\w+[^>]*>", ""));

在删除除<br>and之外的所有标签的地方打印此内容</br>,


Hello.  How can I help you?<br>I don't know<br>Use the link Google</br>Hello.  somedata hey somedata hello somedata How can I help you?<br>I don't know<br>Use the link Google</br>

编辑:正如Lino在他的评论中提到的,如果您的标签名称在br文本周围有可选空格,您可以使用以下允许可选空格的正则表达式,


<\s*\/?\s*(?!br\s*>)\w+[^>]*>

演示允许 br 标签中的可选空间


查看完整回答
反对 回复 2022-06-23
?
跃然一笑

TA贡献1826条经验 获得超6个赞

使用解析 HTMLregex不是一个好主意。如果您确定它始终是 HTML,我建议您使用Jsoup它会自动使用您的 html 并返回文档。


Document doc = Jsoup.parse(sb.toString());

printChilds(doc.body().childNodes());


    public static void printChilds(List<Node> node)

    {

        for (Node n : node)

        {

            if (n.childNodeSize() == 0)

                System.out.print(n.toString());

            else

                printChilds(n.childNodes());

        }

    }

将输出Hello. How can I help you?<br>I don't know<br>Use the link Google<br>


查看完整回答
反对 回复 2022-06-23
  • 2 回答
  • 0 关注
  • 123 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号