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

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

目前我可以分两步完成:

  1. 搜索^$ 并替换为空。

    这将删除所有空行。

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

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

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

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

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

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

测试文本:

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


aa

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

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

aaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaa

想要的结果:

aa
aaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaa

【问题讨论】:

标签: regex libreoffice openoffice.org


【解决方案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)
    

    只需将其匹配项替换为空 - 请参阅 Regex101Regexr

    【讨论】:

      猜你喜欢
      • 2015-12-17
      • 2016-05-08
      • 2021-04-10
      • 2021-12-16
      • 2012-06-01
      • 2013-07-26
      • 2020-09-03
      • 2019-02-16
      • 1970-01-01
      相关资源
      最近更新 更多