最常用且高效安全的html标签清除方法取决于数据来源和质量:简单可控场景用正则三步法(清注释、删script/style、去标签),轻量需求可用手动状态机,外部不可信html必须用jsoup解析库。

直接用正则批量替换最常用,但想真正高效又安全,得看数据来源和质量——简单场景用正则够快,复杂或不可信 HTML 必须用解析库。
正则方式:快但有风险
适合内部可控、格式规范的 HTML 片段,比如自己生成的富文本预处理。
- 基础写法:
str.replaceAll("]*>", ""),能去掉大多数普通标签,如<p><b>hello</b></p><div class="aritcle_card flexRow artxards"> <div class="artcardd flexRow"> <a class="aritcle_card_img" rel="nofollow" href="/xiazai/skill7377" title="Java Maven Secondary Analysis"><img src="https://img.php.cn/upload/skill/000/000/081/179144831942131.jpg" alt="Java Maven Secondary Analysis" onerror="this.onerror='';this.src='/static/lhimages/moren/morentu.png'" ></a> <div class="aritcle_card_info flexColumn"> <a rel="nofollow" href="/xiazai/skill7377" title="Java Maven Secondary Analysis" class="overflowclass">Java Maven Secondary Analysis</a> <p class="overflowclass">分析ZIP压缩包或GitLab仓库中的Java Maven项目,确定二次开发范围、类数量、模块分布及生产相关指标。</p> </div> <a rel="nofollow" href="/xiazai/skill7377" title="Java Maven Secondary Analysis" class="aritcle_card_btn flexRow flexcenter"><b></b><span>下载</span> </a> </div> </div>→hello - 更稳妥三步走(推荐):
- 先清注释:
str = str.replaceAll("<!--[\s\S]*?-->", ""); - 再删 script/style 块:
str = str.replaceAll("]*>[\s\S]*?\1>", ""); - 最后去所有标签:
str = str.replaceAll("?[a-zA-Z][^>]*>", "");
- 先清注释:
- 注意:
<.></.>是非贪婪写法,比<.></.>更安全;但遇到app<le> 或未闭合标签时仍会误删内容</le>
手动状态机:轻量且可控
不依赖正则引擎,逻辑清晰,适合对性能敏感又不想引入第三方库的场景。
- 核心思路:遍历字符,用布尔标志
inTag记录是否处于标签内 - 遇到
开始标记,<code>>结束标记,只拼接非标签区字符 - 优点是无正则开销,代码短;缺点是对
<div onclick="a<b"> 这类含 <code> 的属性值无法识别,会提前退出标签 <h3>Jsoup 解析库:真正可靠的选择</h3> <p>当 HTML 来自外部(如网页爬虫、用户提交、富文本编辑器),这是首选方案。</p> <ul> <li>一行代码搞定:<code>Jsoup.parse(htmlStr).text(),自动处理嵌套、转义、注释、自闭合标签等所有边界情况 - 还能保留结构语义(如换行、段落间距):
Jsoup.parse(htmlStr).body().text()或提取特定元素 - Maven 引入:
<dependency><groupid>org.jsoup</groupid><artifactid>jsoup</artifactid><version>1.18.3</version></dependency>
其他注意事项
纯文本清理常被忽略,但实际很重要:
- HTML 实体如
、<需额外转换,Jsoup 自动处理,正则需单独替换 - 连续空白(换行、制表、多个空格)建议统一压缩:
str.replaceAll("\s+", " ").trim() - String 不可变,每次
replaceAll都新建对象,大量文本建议用StringBuilder+ 手动遍历优化










