首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >7分钟搞定正则替换:批量清洗技术博客中的奇怪格式符号(含20个可套用Regex)

7分钟搞定正则替换:批量清洗技术博客中的奇怪格式符号(含20个可套用Regex)

作者头像
安全风信子
发布2025-11-18 15:42:48
发布2025-11-18 15:42:48
1120
举报
文章被收录于专栏:AI SPPECHAI SPPECH

一句话承诺:复制即用的正则清单+流程图,帮你把技术文章里的奇怪空格、中文标点、错位代码块一次性清理干净。


代码语言:javascript
复制
flowchart TD
    A[开始:文章原始文本] --> B{检测脏字符}
    B -->|全角空格/混合标点| C[统一为半角]
    B -->|重复空行/断行| D[压缩至单空行]
    B -->|代码块错位| E[修复围栏```]
    B -->|标题层级错乱| F[标准化#层级]
    C --> G[批量正则替换]
    D --> G
    E --> G
    F --> G
    G --> H[人工快速扫描]
    H --> I{是否仍有异常}
    I -->|是| B
    I -->|否| J[发布]

快速对照表:常见脏格式与处理动作

类型

典型症状

正则/动作

备注

全角空格

段落中出现“ ”

替换为半角空格

影响断句与对齐

中文标点混用

“,”、“。”与英文逗号句号混排

统一为中文或英文

根据平台风格选择

重复空行

三行以上连续空行

压缩为一行

提升阅读紧凑度

代码围栏

缺少```或语言标注

补全并标注语言

代码高亮更稳定

标题层级

多个H1或跳级

统一成H2-H3

有利推荐系统识别


正则替换清单(可直接套用)

提示:多数IDE支持正则搜索替换(VS Code、JetBrains、Sublime等)。先全局替换,再人工扫一遍。

代码语言:javascript
复制
# 1) 全角空格 → 半角
\u3000+ -> " "

# 2) 连续空行压缩为单空行
(^\s*\n){2,} -> "\n\n"

# 3) 中文逗号统一为英文逗号(示例,根据需要定向)
, -> ,

# 4) 中文句号统一为英文句号(示例)
。 -> .

# 5) 去除行尾多余空格
[ \t]+$ -> ""

# 6) 统一代码围栏为三反引号
^``\s*$ -> "```"

# 7) 标题多余空格压缩
^(#+)\s{2,} -> "$1 "

# 8) 把Tab统一为2空格(示例)
\t -> "  "

# 9) Markdown表格对齐:去除行首行末空格
^\s+|\s+$ -> ""

# 10) 统一链接格式中的中文冒号
: -> :

# 11) 去除不可见控制字符
[\u0000-\u001F\u007F] -> ""

# 12) 统一引号为英文双引号(按需)
[“”] -> "

# 13) 统一单引号为英文单引号(按需)
[‘’] -> '

# 14) 把中文括号统一为英文括号(按需)
[(] -> (
[)] -> )

# 15) 压缩连续的多个空格为一个
 {2,} -> " "

# 16) 移除尾随的多余标点(示例)
[,.;:,。;:]+$ -> ""

# 17) 修复错位的列表项(去除多余前导空格)
^\s{3,}(-|\*)\s -> "- "

# 18) 统一行尾Windows换行为\n
\r\n -> \n
# 19) 替换中文引号包裹的代码为反引号
“([^”]+)” -> ` $1 `

# 20) 清理多余的标题井号尾随空格
^(#+)\s*(.*?)\s*$ -> "$1 $2"

示例:在 VS Code 中批量替换(演示流程)


示例代码块:一键清理脚本(Node.js)

代码语言:javascript
复制
const fs = require('fs');

function cleanse(text) {
  return text
    .replace(/\u3000+/g, ' ')
    .replace(/(^\s*\n){2,}/gm, '\n\n')
    .replace(/,/g, ',')
    .replace(/。/g, '.')
    .replace(/[ \t]+$/gm, '')
    .replace(/^``\s*$/gm, '```')
    .replace(/^(#+)\s{2,}/gm, (m, p1) => `${p1} `)
    .replace(/\t/g, '  ')
    .replace(/[\u0000-\u001F\u007F]/g, '')
    .replace(/[“”]/g, '"')
    .replace(/[‘’]/g, "'")
    .replace(/[(]/g, '(')
    .replace(/[)]/g, ')')
    .replace(/ {2,}/g, ' ')
    .replace(/[,.;:,。;:]+$/gm, '')
    .replace(/^\s{3,}(-|\*)\s/gm, '- ')
    .replace(/\r\n/g, '\n')
    .replace(/“([^”]+)”/g, '`$1`')
    .replace(/^(#+)\s*(.*?)\s*$/gm, (m, h, t) => `${h} ${t}`);
}

const input = fs.readFileSync('input.md', 'utf8');
fs.writeFileSync('output.md', cleanse(input));

常见坑位与替代法

  • 坑1:一刀切替换可能破坏真实语义。替代法:先在小范围试跑,再全局替换。
  • 坑2:统一中文标点为英文可能不符合平台风格。替代法:按平台推荐风格切换。
  • 坑3:表格对齐问题不只在空格,可能是管道“|”数量不一致。替代法:保证每行列数一致。

快速检查清单

  • 全局搜索不可见字符,确保已移除。
  • 代码块语言标注齐全(如 js、bash、```mermaid)。
  • 标题只保留一个H1,其余使用H2/H3。
  • 连续空行压缩,段落紧凑。

结尾与下一篇预告

如果你的文章排版已经显著改善,下一篇我们将处理“Git 一键自救:误删分支/错提交到 main 的快速恢复流程(图解)”,附时序图和命令清单,保证能在最短时间把坑填上。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2025-10-23,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 快速对照表:常见脏格式与处理动作
  • 正则替换清单(可直接套用)
  • 示例:在 VS Code 中批量替换(演示流程)
  • 示例代码块:一键清理脚本(Node.js)
  • 常见坑位与替代法
  • 快速检查清单
  • 结尾与下一篇预告
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档