正则表达式通过匹配与替换间接实现文本格式化:先精准定位目标,再统一调整样式。涵盖缩进清理、标点空格标准化、段落列表转换、信息提取重构等场景,需配合多行/单行模式并在编辑器中谨慎操作。

正则表达式本身不直接“格式化”文本,而是通过匹配、提取、替换等操作间接实现格式化效果。关键在于:先用模式精准定位目标内容,再用替换逻辑统一调整样式或结构。
识别并统一缩进与空行
文本块中常见的混乱包括混用空格/Tab、多余空行、首尾空白等。可用以下方式清理:
- 去除每行首尾空白:
^s+|s+$(匹配行首或行尾空白,全局替换为空) - 将多个连续空行压缩为一个:
s*→ 替换为 - 统一缩进为4个空格(假设原缩进是2或8空格):
^( {2,}|\t)→ 替换为(注意^需配合多行模式m)
标准化标点与空格
中英文混排时常见标点前后空格不一致,例如中文逗号后多空、英文句点前少空:
- 中文标点后不加空格(如“,”“。”“?”):
([,。?!;:])s+→ 替换为$1 - 英文标点前不加空格,后加一个空格(除句点、逗号外):
(w)s*([!@#$%^&*()_+-=[]{};':"\|,./?])→ 替换为$1$2 - 修复英文单词间多余空格:
s{2,}→ 替换为单个空格
转换段落结构与列表格式
把无序的换行文本转为规范段落或带符号列表:
- 将连续非空行合并为段落(即把段内换行替换成空格):
S.*? (?=S|$)(配合单行模式s,再用分隔段落) - 把以短横线或星号开头的行转为Markdown列表:
^[-*]s+(.*)$→ 替换为- $1(启用多行模式m) - 给每段编号:
^(?=S)→ 替换为1.(再配合编辑器的“增量替换”功能逐行递增)
提取关键信息并重构布局
从原始文本块中抽取出字段(如姓名、电话、地址),再按模板重新组织:
- 匹配键值对:
(姓名|电话|邮箱)[::]s*(S+)→ 提取后用替换引用$1: $2重排 - 将多行地址合并为一行:
地址[::]s*(S+)s+(S+)s+(S+)→ 替换为地址: $1 $2 $3 - 用捕获组交换字段顺序,比如把“姓 名”变成“名,姓”:
^(S+)s+(S+)$→ 替换为$2,$1
实际使用时,推荐在支持正则的编辑器(如VS Code、Sublime Text、Notepad++)中开启“正则模式”和“多行/单行模式”,边测试边调整。替换前务必备份原文——正则写错可能批量误改。

















