正则文本标准化需分场景精准设计:标点间距统一(避开数字中的符号)、中英文标点归一化(成对处理引号)、数字单位间智能加空格、姓名术语首字母大写并清理空格。

正则实现文本一键标准化,核心是用一条(或少数几条)精准正则规则,覆盖常见不规范模式,并通过替换逻辑统一输出格式。它不是“万能替换”,而是“有边界、有例外、有上下文判断”的智能清洗。
标点符号间距自动对齐
目标:逗号、句号、冒号前不留空格,后跟且仅跟一个空格(如“你好 ,世界”→“你好,世界”)。但必须避开数字中的小数点和千分位逗号(如“3.14”“1,000”不能改)。
推荐正则(支持PCRE/Python/JavaScript):
\s*([:,.])\s*(?!\s)(?
说明:
- 用负向后行断言 (? 排除前面是数字+点/逗号的情况
- 用负向先行断言 (?!\s) 防止后面已有空格再加空格
- 捕获组 ([:,.]) 确保只处理目标符号,替换为 $1 (符号+一个空格)
中英文标点批量归一化
解决合同、报表中全角逗号(,)、半角逗号(,)、中文引号(“”)、英文引号("")混用问题。
可分两步执行:
- 把所有英文标点 → 替换为对应中文全角:如 , → ,、" → “(注意引号需成对处理)
- 把所有中文全角标点 → 统一映射到标准 Unicode:如 .→ 。、:→ :(避免使用形近但编码不同的字符)
关键点:先用 [\uFF0C\u002C] 匹配中英文逗号,再统一替换成 \uFF0C(全角逗号);引号类需配合前后文判断是否成对,避免单边误改。
数字与单位间空格智能补全
像“100kg”“25℃”“5.5mm”这类紧贴写法,常需改为“100 kg”“25 ℃”“5.5 mm”以利阅读和后续解析。
通用思路:
- 匹配“数字+单位”结构:用 (\d+(?:\.\d+)?)\s*([a-zA-Z\u4e00-\u9fa5\u2103\u212B]+)
- 替换为 $1 $2(中间加一个空格)
- 单位列表可预置:℃、mm、kg、Mbps、GB、人、次、项等,提高准确率
姓名/术语首字母大写 + 去多余空格
应对“zhang san”“LI WEI”“ john doe ”等不一致写法。
SQL 示例(PostgreSQL):
REGEXP_REPLACE(INITCAP(TRIM(name)), '\s+', ' ', 'g')
Excel 或 Python 中可用类似逻辑:
- 先 TRIM 去首尾空格
- 再用正则 \b\w 找每个单词首字母,转大写(注意保留原大小写逻辑,避免 PROPER 把“MAC”错转为“Mac”)
- 最后用 \s+ 替换为单个空格,消除中间多个空格











