You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用正则表达式将空白字符折叠为单个空格或换行符

文本空白清理的简便实现方法

核心思路

分两步处理,先统一合并含换行的空白块,再处理纯空格类空白:

  1. 将所有包含换行符(\r/\n)的连续空白块替换为单个\n
  2. 将**剩余不含换行的连续空白(空格、制表符等)**替换为单个空格
  3. 最后去除首尾可能残留的空白字符

正则实现示例(以Python为例)

import re

# 原始杂乱文本
raw_str = "\r\r     \r\n    \r\nSome interesting      text on line one...\r\n    And line two    \r\n"

# 第一步:合并含换行的空白块为单个\n
processed = re.sub(r'(?:[ \t]*(?:\r|\n)[ \t]*)+', '\n', raw_str)
# 第二步:合并纯空白为单个空格
processed = re.sub(r'[ \t]+', ' ', processed)
# 去除首尾空白(包括多余的\n)
final_result = processed.strip()

print(repr(final_result))
# 输出:'Some interesting text on line one...\nAnd line two'

正则说明

  • 第一步正则(?:[ \t]*(?:\r|\n)[ \t]*)+:匹配被空格/制表符包围的一个或多个换行序列,确保所有连在一起的换行(不管中间夹了多少空格)都合并成一个\n
  • 第二步正则[ \t]+:仅匹配不含换行的连续空白,替换为单个空格,避免破坏已经处理好的换行结构

其他语言适配

这个逻辑可以直接移植到支持正则的语言,只需调整正则替换的语法:

  • JavaScript示例:
const rawStr = "\r\r     \r\n    \r\nSome interesting      text on line one...\r\n    And line two    \r\n";
let processed = rawStr.replace(/(?:[ \t]*(?:\r|\n)[ \t]*)+/g, '\n');
processed = processed.replace(/[ \t]+/g, ' ');
const finalResult = processed.trim();
console.log(finalResult);

内容的提问来源于stack exchange,提问作者Basic

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 22:55:10