最稳妥的单行html标签清除正则为,它通过否定字符集匹配尖括号内不含>的片段,避免误删属性值中的 ↩

为什么]*>比<.>更可靠
Sublime 的 PCRE 正则引擎对换行和引号内字符处理较弱,<.></.>在遇到 <div>\nHello</div> 或 title=">click" 时会提前截断或漏匹配。而 ]*> 明确限定“、以 > 结尾”,天然避开属性值里的 和 <code>>,也不会跨行误吞内容。
常见翻车点:
-
<.></.>在<script>alert('<div>')</script>中会把字符串里的<div> 当标签删掉<li> <code>会把<!-- <p>test</p> -->里的注释结构破坏 - 未勾选
.*按钮(即正则模式未启用)导致整个表达式被当作文本字面量处理 - 先用鼠标或
Ctrl+Shift+P→Fold Tags折叠所有<script></script>和<style></style>块 - 再执行
]*>替换——折叠后的内容不会被正则扫描到 - 或者手动选中所有
<script></script>/<style></style>区域,按Ctrl+Shift+P输入Selection: Invert Selection,反选后再替换 - 先统一换行符:
(?:\r\n|\r|\n)+→\n,避免 CRLF/LF 混用 - 再单独处理块级标签:把
<p>(.*?)</p>替换为\n$1\n,<div>(.*?)</div>同理 - 最后清理多余空行:
\n\s*\n→\n\n,再手动删掉顶部/底部冗余空行 - 小范围、结构清晰的 HTML 片段:用
]*>+ 手动隔离<script></script>完全够用 - 整页或批量处理不可信 HTML:扔进 Python 的
BeautifulSoup或浏览器的DOMParser,让真正解析器干活 - 含 Vue/JSX 模板语法的文件:原生正则根本无法区分
<template></template>和<div>,得靠插件或专用工具<p>正则只是文本处理器,不是 HTML 解析器。越想让它干解析器的活,越容易在边界 case 上栽跟头。</p> </div>
怎么安全跳过<script>和<style>块</script>
]*> 本身不识别上下文,遇到 <script></script> 内的 HTML 字符串仍会误删。必须人工隔离这些区域:
注意:别指望单条正则自动跳过它们——Sublime 没内置 HTML 解析器,这步必须显式干预。
删完标签后文本粘连怎么修
纯删标签后,<p>标题</p><div class="aritcle_card flexRow artxards">
<div class="artcardd flexRow">
<a class="aritcle_card_img" rel="nofollow" href="/xiazai/shouce/1862" title="使用HTML,CSS,JavaScript开发Android应用程序 英文文字pdf版附源文件"><img
src="https://img.php.cn/upload/manual/000/000/010/170901721079108.gif" alt="使用HTML,CSS,JavaScript开发Android应用程序 英文文字pdf版附源文件" onerror="this.onerror='';this.src='/static/lhimages/moren/morentu.png'" ></a>
<div class="aritcle_card_info flexColumn">
<a rel="nofollow" href="/xiazai/shouce/1862" title="使用HTML,CSS,JavaScript开发Android应用程序 英文文字pdf版附源文件" class="overflowclass">使用HTML,CSS,JavaScript开发Android应用程序 英文文字pdf版附源文件</a>
<p class="overflowclass">如果你了解HTML,CSS和JavaScript,您已经拥有所需的工具开发Android应用程序。本动手本书展示了如何使用这些开源web标准设计和建造,可适应任何Android设备的应用程序 - 无需使用Java。您将学习如何创建一个在您选择的平台的Andr​​oid友好的网络应用程序,然后转换与自由PhoneGap框架到一个原生的Andr​​oid应用程序。了解为什么设备无关的移动应用是未来的潮流,并开始构建应用程序,提供更</p>
</div>
<a rel="nofollow" href="/xiazai/shouce/1862" title="使用HTML,CSS,JavaScript开发Android应用程序 英文文字pdf版附源文件" class="aritcle_card_btn flexRow flexcenter"><b></b><span>下载</span>
</a>
</div>
</div>
<h2>副标题</h2> 变成“标题副标题”,这不是正则错了,是语义丢失后的必然结果。补救要分层做:
别直接用 \s+ → ,它会把段落间换行也压成空格,反而更难读。
什么时候不该硬刚正则
如果原始 HTML 来自爬虫、邮件正文或含大量容错写法(如未闭合标签、嵌套错乱),]*> 就会开始漏删或错删。这时候正则不是不够强,而是模型错了——它假设输入是语法合法的 HTML。
真实场景建议:










