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

时间:2017-06-13 17:39:13

标签: regex libreoffice openoffice.org

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

目前我可以分两步完成:

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

    这将删除所有空行。

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

    这将删除任何只包含空格或制表符的行。

    重要说明:从我的角度来看,第二个版本也应该删除任何空行(作为第一个版本),但实际上它并没有。

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

    • 出于什么原因,第二个正则表达式只匹配带有空格和制表符的行,但不匹配空行?

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

    测试文字:

    Just for example, I changed spaces to dots
    and tabs to dashes.
    
    
    aa
    
    ..........................
    
    -------------------
    
    aaaaaaaaaaaaaa
    
    aaaaaaaaaaaaaaaaaaa
    

    期望的结果:

    aa
    aaaaaaaaaaaaaa
    aaaaaaaaaaaaaaaaaaa
    

2 个答案:

答案 0 :(得分:1)

AltSearch可以使用Batch脚本作为一个步骤执行此操作。在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.

答案 1 :(得分:1)

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

\s(?=\s)

只需将匹配项替换为空-参见Regex101Regexr