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

我有一个字符串生成器对象“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("<.*?>", "");


森林海
浏览 124回答 2
2回答

拉风的咖菲猫

众所周知,如果您尝试捕获完整的标签数据并尝试对其进行操作,强烈建议不要使用正则表达式解析 HTML。但是如果你只是想去掉所有标签,或者有条件地去掉一些标签,比如在这种情况下,你想删除除标签之外的所有<br>标签,你可以使用这个正则表达式,<\/?(?!br>)\w+[^>]*>解释:<- 匹配标签的开始\/?- 可选地匹配/匹配的结束标签(?!br>)- 如果标签名称是,则拒绝匹配br\w+- 匹配任何由单词字符组成的标签名称[^>]*- 可选地允许标签属性匹配>- 匹配关闭标签示例 Java 代码,String s = "Hello.&nbsp; How can I help you?<br>I don't know<br>Use the link <a \r\n" +&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; "href=\"www.google.com\" target=\"_blank\">Google</a></br>Hello.&nbsp; <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" +&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; "href=\"www.google.com\" target=\"_blank\">Google</a></br>";System.out.println(s.replaceAll("</?(?!br>)\\w+[^>]*>", ""));在删除除<br>and之外的所有标签的地方打印此内容</br>,Hello.&nbsp; How can I help you?<br>I don't know<br>Use the link Google</br>Hello.&nbsp; 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 标签中的可选空间

跃然一笑

使用解析 HTMLregex不是一个好主意。如果您确定它始终是 HTML,我建议您使用Jsoup它会自动使用您的 html 并返回文档。Document doc = Jsoup.parse(sb.toString());printChilds(doc.body().childNodes());&nbsp; &nbsp; public static void printChilds(List<Node> node)&nbsp; &nbsp; {&nbsp; &nbsp; &nbsp; &nbsp; for (Node n : node)&nbsp; &nbsp; &nbsp; &nbsp; {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if (n.childNodeSize() == 0)&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; System.out.print(n.toString());&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; else&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; printChilds(n.childNodes());&nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; }将输出Hello. How can I help you?<br>I don't know<br>Use the link Google<br>
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java