应使用 \s 匹配任意空白字符(含制表符、换行符、全角空格等),而非仅 ;常见用法包括去首尾空白、合并连续空白、清除纯空白行及提取非空内容,并需注意贪婪性与边界控制。

用 * 处理任意长度空白占位,核心是匹配“零个或多个空白字符”,而不是简单删掉空格。
识别哪些字符算“空白”
正则中的空白字符不止普通空格,还包括制表符(\t)、换行符(\n、\r)、全角空格、不间断空格等。直接写 * 只匹配半角空格,容易漏掉其他空白。稳妥做法是使用预定义字符类:
- \s*:匹配任意数量的空白字符(推荐)
- [ \t\n\r\u3000]*:显式列出常见空白(含中文全角空格 \u3000)
- 避免只用 *,尤其在处理爬虫数据、Excel导出文本或用户粘贴内容时
常见清洗场景与写法
原始数据中空白占位常出现在字段两端、分隔符之间或缺失值位置。对应处理方式如下:
- 去首尾空白:^\s*|\s*$(用空字符串替换)
- 合并连续空白为单个空格:\s+ → 替换为 " "
- 清除字段中纯空白行:^\s*$(配合 re.MULTILINE 标志)
- 提取非空内容(跳过空白占位):(\S+) 或 ([^\s]+)
注意边界与贪婪性
* 默认是贪婪匹配,会吃掉尽可能多的空白——这通常是优点,但需防误吞有效内容:
- 错误写法:a\s*b 在 "a b" 中正常;但在 "a bc" 中也会匹配到 "a b",可能切掉后面有用的 "c"
- 安全写法:用 \s* 配合明确锚点或分组,例如 ^(\s*)(\S.*\S)(\s*)$ 来分别捕获首尾空白和中间主体
- 若需最小匹配(懒惰),改用 \s*?,但处理空白占位时极少需要










