\]\*> 是 sublime 中唯一能稳定删除所有单行 html 标签的正则,不跨行、不误删属性值中的 ,但删后文本粘连,且对 和 块无效。

]*> 是 Sublime 里唯一能稳定删掉所有单行 HTML 标签(包括 <div>、<code>、<img src="">)的正则,它不跨行、不误吞属性值里的 或 <code>>,但删完后文本会粘连,且对 <script></script> 和 <style></style> 块完全无感。
为什么不用 <.></.>?
这个写法看着简单,实际在 Sublime 的 PCRE 引擎里问题一堆:
-
<.></.>默认不跨行,遇到<div>\nHello</div>就断成两截,只删开头不删结尾 - 它无法识别引号边界,会把
<script>console.log('<div>')</script>里的字符串也当标签删掉 - 遇上
alt="A > B"这种含>的属性值,.*?会在第一个>就收手,导致标签残留 - 未勾选右下角
.*图标时,整个表达式被当作文本字面量,根本不会执行正则匹配
怎么安全执行 ]*> 替换?
这是真正可落地的操作链,漏一步就白干:
- 确保右下角状态栏的
.*图标已点亮(启用正则),但\n图标必须关闭(禁用.匹配换行符) - 查找框填:
]*>,替换框彻底留空(别填\n、空格或不可见字符) - 先点 Find All 看匹配数是否合理——如果文件有 200 行却只匹配出 5 个标签,大概率是
\n图标误开了 - 确认无误后点 Replace All,一次清掉所有开始/结束/自闭合标签
删完标签后文本粘连、空行乱飞怎么办?
这不是正则错了,是 HTML 语义剥离后的必然结果。原始 <p>标题</p><div class="aritcle_card flexRow artxards">
<div class="artcardd flexRow">
<a class="aritcle_card_img" rel="nofollow" href="/xiazai/skill5493" title="html-to-pptx"><img
src="https://img.php.cn/upload/skill/000/000/081/179051045119472.jpg" alt="html-to-pptx" onerror="this.onerror='';this.src='/static/lhimages/moren/morentu.png'" ></a>
<div class="aritcle_card_info flexColumn">
<a rel="nofollow" href="/xiazai/skill5493" title="html-to-pptx" class="overflowclass">html-to-pptx</a>
<p class="overflowclass">将多页 HTML 演示文稿转换为美化的 PPTX 文件,便于分享和分发。</p>
</div>
<a rel="nofollow" href="/xiazai/skill5493" title="html-to-pptx" class="aritcle_card_btn flexRow flexcenter"><b></b><span>下载</span>
</a>
</div>
</div>
<div>内容</div> 删完只剩“标题内容”,中间没换行也没空格。得补三步:
- 先统一换行符:查找
(?:\r\n|\r|\n)+→ 替换为\n(解决 Windows/Linux 换行不一致) - 再还原块级语义:查找
<p>|</p> <div>|<h>|<li> → 替换为 <code>\n;再查|










