处理从网页复制粘贴而来的日志、代码或配置文件时,最令人困扰的往往并非内容本身,而是那些随之附带的、各式各样的“空白行”。它们可能仅包含几个普通的半角空格,或是肉眼难以察觉的制表符,甚至是从某些老旧网页编辑器中遗留的全角空格。这些空行平时看似无关紧要,但一旦文本需要用于JSON格式校验、作为Ansible模板执行,或通过grep命令进行管道处理,它们便会立即成为破坏逻辑、引发错误的根源。

想要一次性清除这些“隐形垃圾”,EditPlus搭配正则表达式无疑是效率利器。不过,针对不同的文本来源,清理策略也需要稍作调整。
用正则替换删除所有空白行
核心操作很简单:按下 Ctrl + H 调出替换对话框,然后按以下步骤执行。
在“查找内容”框中,输入正则表达式:^[ t]*n。这里需要特别注意:^符号后面紧跟的是一个“半角空格”,随后是代表制表符的 t,最后是代表换行符的 n。中间的方括号不能遗漏。
“替换为”框则保持完全空白,不填写任何字符。
关键是,务必确保勾选“正则表达式”和“当前文档”这两个选项,然后点击“全部替换”。通常,首次执行后,连续的多个空行会被缩减为单个空行。此时,再次点击“全部替换”,所有空白行就会被彻底清除。
这个方法对付由普通半角空格和Tab键造成的空行效果显著,但它有一个明显的局限:对于包含全角空格,或者行尾是Windows换行符(rn)的“伪空行”,它无能为力。因此,如果处理的是从IE等旧版浏览器复制的文本,或者在Windows与Linux之间反复传递过的日志,就需要先执行一个步骤:到菜单栏选择“文档”→“转换”→“转换为Unix格式”,将换行符统一为LF(即n),然后再执行上述替换操作。
处理含全角空格或不可见字符的伪空行
当遇到更“顽固”的空行时,我们需要升级正则表达式。这里有两个常用方法。
方法一:一步到位的兼容正则
在“查找内容”中,输入更全面的表达式:^[ tu3000xA0]*n。这里的u3000代表中文全角空格,xA0则代表不间断空格(在网页中十分常见)。同样勾选正则表达式,然后点击替换。这个写法能覆盖绝大多数由“隐形字符”构成的空行,但对于行尾残留的r(回车符)仍然无效。
方法二:推荐的两步清除法(尤其适合跨平台文件)
第一步,先处理换行符:查找 rn,替换为 n,将Windows换行符统一为Unix格式。
第二步,再用上面提到的 ^[ tu3000xA0]*n 表达式进行替换。两步操作下来,基本上所有类型的空白行都能被清理干净。
防止误删带注释的“假空行”
有时,事情会变得更棘手。例如,在配置文件(如Nginx的.conf文件,或某些软件的.ini文件)中,经常能看到一些以 # 或 ; 开头,后面仅跟了几个空格的注释行。这些行“看起来”像是空行,但实际上是有语义的注释。
如果直接使用前面那些“格杀勿论”的正则表达式,这些珍贵的注释行会被一并删除,可能引发配置错误。更安全的做法是使用负向先行断言,比如这个正则:^(?![#;]).*[ tu3000xA0]*n。它的含义是匹配那些“行首不是#或;,并且整行只有空白字符和换行符”的行。
但遗憾的是,EditPlus(至少5.0及更早版本)的内核并不支持 (?!) 这种高级语法。因此,退而求其次的最佳实践是:批量替换后,人工复查。
操作流程是:先用 ^[ tu3000xA0]*n 进行批量删除。完成后,立刻按下 Ctrl + F,分别搜索 ^# 和 ^;(确保勾选了正则表达式),快速浏览一遍,确认有没有以注释符号开头的行被错误删除。一旦发现误删,不要犹豫,立即按 Ctrl + Z 撤销上一步操作,然后考虑更谨慎的手动处理或改用其他支持高级正则的编辑器。
归根结底,正则表达式虽然强大,但应对配置文件这类“牵一发而动全身”的文本时,多一分谨慎总没有错。毕竟,批量操作的效率,不应以牺牲准确性为代价。
