移除多余空格而不丢失换行
整理粘贴的草稿同时保留段落。模式和替换都很重要。
你从另一个应用粘贴了一份草稿。单词之间多了些空格,原有的分段却不该变。将所有空白替换为单个空格可能会把整份草稿变成一行长文本。
对于普通的重复空格和制表符,先在正则表达式游乐场中使用这个模式:
[ \t]{2,}
将每个匹配替换为一个普通空格,并启用查找所有匹配。此模式不包括换行符。
先在小草稿上试试
下载示例文本。它包含重复空格、第二个标签后的两个制表符、名字 Zoë 以及最后一段前的空行。
- 将文件内容粘贴到测试文本中。
- 将上面的模式粘贴到正则表达式中,不要带斜杠。
- 在选项中,确保查找所有匹配已开启。表达式旁边显示的标志应包含
g。 - 选择替换。在手机上,先打开结果。
- 在替换为中,输入一个空格。如果留空,则会删除匹配的空格。
预览应显示三个匹配被替换,并保持以下布局:
Creator: Zoë
Topic: Colour palettes
Next step: export PDF.
在将输出复制到草稿之前,与清理后的文本文件进行比较。
为什么更宽泛的模式会丢失段落
在 JavaScript 正则表达式中,空白类也包括行终止符。下面这个看起来省事的写法,匹配的不只是空格:
\s+
用空格替换时,它也会替换换行符和段落之间的空行。合并成一行的结果显示了差异。这对于刻意单行的值可能有用,但当段落需要保留时,这是错误的选择。
更窄的模式匹配至少两个普通空格或制表符的连续序列。它保留单个制表符不变。如果你想也将单个制表符转换为空格,请改用以下模式:
[ \t]+
两种版本都不会匹配所有可能的 Unicode 空格字符。从网页复制的不换行空格可能需要单独处理。检查输入中实际的内容,而不是让模式变得更宽泛直到看似有效。
检查匹配计数和替换结果
没有 g 标志时,只会替换第一个匹配的序列。如果第一行看起来已修复,但后面的行仍有间隙,请先检查查找所有匹配,再更改模式。
保留原始文本在旁边,并比较结果。制表符和空格在表格、代码、诗歌和 Markdown 缩进中可能影响内容或结构。空白清理适用于这份纯文本草稿;它不是适用于所有文件的安全通用格式化工具。
对于 Markdown,使用Markdown 编辑器在编辑后检查渲染结构。对于结构化数据,使用理解该格式的格式化工具。
我们检查了什么
2026 年 10 月 5 日,我们使用与游乐场相同的 JavaScript 匹配函数处理了示例。窄模式替换了三处连续空白,并保留了每个换行符,包括空行。我们还检查了宽模式和仅首次匹配的情况。结果文件记录了模式、标志和精确输出。
该工具在浏览器中处理文本。这些结果描述的是提供的示例,而不是所有包含重复空格的文档。