使用正则表达式删除任何空白行

Posted

技术标签:

【中文标题】使用正则表达式删除任何空白行【英文标题】:Remove any blank or whitespaced lines using regex 【发布时间】:2017-06-13 17:39:12 【问题描述】:

我正在尝试使用正则表达式查找并删除 OpenOffice 文档中的任何空白行。

目前我可以分两步完成:

    搜索^$ 并替换为空。

    这将删除所有空行。

    搜索^\s*$ 并替换为空。

    这将删除所有仅包含空格或制表符的行。

    重要提示:在我看来,这个第 2 版也应该删除任何空行(作为第 1 版),但实际上它没有。

所以,实际上有两个问题。

为什么第二个正则表达式只匹配带有空格和制表符的行,而不匹配空行?

有没有办法将第一版和第二版结合起来一步达到预期的效果?这是我尝试过的:^$|^\s*$(^|^\s*)$。但它不起作用。它只匹配空白行,但不匹配空行。

测试文本:

Just for example, I changed spaces to dots
and tabs to dashes.


aa

..........................

-------------------

aaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaa

想要的结果:

aa
aaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaa

【问题讨论】:

根据help.libreoffice.org/Common/List_of_Regular_Expressions,|是用来查找多个词的。 ^$ 是一个表达式而不是一个术语,所以这可能就是它不起作用的原因。 【参考方案1】:

AltSearch 可以使用批处理脚本一步完成。在 AltSearch 对话框中,单击 Batch >>。然后Edit文件并在最后粘贴以下代码。

[Name] Remove any blank or whitespaced lines

  ; Remove any lines which contains only spaces or tabs.
  [Find]^\s*$
  [Replace]
  [Parameters] MsgOff Regular 
  [Command] ReplaceAll  

  ; Remove any empty lines.
  [Find]^$
  [Replace]
  [Parameters] MsgOff Regular 
  [Command] ReplaceAll

[End]  

现在,保存文本文件并单击Refresh。最后,点击Remove any blank or whitespaced lines,然后按Execute

这会产生所需的结果并显示一个对话框:

Batch   'Remove any blank or whitespaced lines'   is ended. 

10  replacements have been done.

【讨论】:

【参考方案2】:

因为你的问题的标题读起来像是要求一个纯正则表达式(这就是我找到它的原因):

\s(?=\s)

只需将其匹配项替换为空 - 请参阅 Regex101 和 Regexr。

【讨论】:

以上是关于使用正则表达式删除任何空白行的主要内容,如果未能解决你的问题,请参考以下文章

java正则表达式,怎么匹配空白行

正则表达式匹配任何空白字符或者匹配任何非空白

使用正则表达式删除第一次出现的空白,然后用逗号替换其余的选项卡

使用正则匹配删除文本空行 - 正则 - 空白行 - vscode

正则表达式匹配文本中包含换行符等空白字符如何匹配

正则表达式