最稳妥的HTML标签删除正则为]*>:它通过否定字符集匹配尖括号内不含>的内容,避免引号干扰和跨行失效,但无法识别中字符串内的标签,需先反选隔离或分步处理。

用 ]*> 安全删标签,别碰 <.></.>
Sublime 默认不提供“删标签留文本”按钮,但靠正则替换就能做到,关键是选对模式。]*> 是最稳妥的选择:它匹配从 开始、中间不含 <code>>、到下一个 > 结束的所有内容,能覆盖 <div>、<code><img src="" alt="Sublime快速删除所有特定标签 批量清理HTML冗余" >、
<br/>等所有单标签和双标签的开始部分,且不会跨行、不会误吞
script 里字符串中的 (比如 <code>alert('<div>'))。
<p>而 <code><.></.> 看似简洁,但在 Sublime 的 PCRE 变种引擎中对换行支持弱,遇到多行结构或引号内含 >(如 title=">click me")时会提前截断,删不干净甚至破坏注释或属性值。
- 打开 Ctrl+H(Windows/Linux)或 Cmd+H(macOS)
- 勾选右上角
.*按钮启用正则 - 查找框填
]*>,替换框留空 - 点 Replace All —— 标签即刻消失,文本保留
删完标签后文本粘连?用两步清理空白
直接删标签会导致 <p>标题</p>
<h2>副标题</h2> 变成 标题副标题,中间没空格也没换行。这不是正则错了,是 HTML 语义被剥离后的自然结果。
建议紧接着做一次空白规整:
立即学习“前端免费学习笔记(深入)”;
- 查
\s+→ 替换成单个空格,可缓解粘连(但会把换行也压成空格) - 更推荐:先查
(?:\r\n|\r|\n)+→ 替换成\n,统一换行符;再手动删多余空行,或配合^\s*$删除纯空行 - 若想保段落结构,可先单独处理
<p>.*?</p>:查找填<p>(.*?)</p>,替换为\n$1\n,再删其他标签
遇到 <script></script> 或 <style></style> 怎么办?先隔离再操作
]*> 仍会误删 <script>alert('<div>')</script> 里的 <div>——因为它不区分上下文,只认尖括号。这时候不能硬删,得先保护关键区域。
<ul>
<li>手动选中全部 <code><script></script> 和 <style></style> 块(包括起止标签),按 Ctrl+Shift+P(macOS 为 Cmd+Shift+P)输入 Selection: Invert Selection,反选后只剩 HTML 主体
]*> 替换,安全无误]*>[\s\S]*?\1> 匹配并替换为空(注意结尾的 是字面量),清掉脚本/样式块;再对剩余内容跑 ]*>
别指望一次正则解决所有问题
HTML 不是纯文本,嵌套、转义、CDATA、自定义标签都会让正则失效。真正复杂的 HTML(比如含 Vue 模板语法或 JSX 片段)不适合用 Sublime 正则硬刚。这时候该上解析器——用 Python 的 BeautifulSoup 或 Node 的 cheerio 才靠谱。
在 Sublime 里,正则只是快速清理「已知结构清晰」的 HTML 片段的工具,不是万能锤。删完记得肉眼扫几眼,尤其检查是否有意外断裂的属性值或残留的半截标签。



















