使用正则表达式删除任何空白行
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。
【讨论】:
以上是关于使用正则表达式删除任何空白行的主要内容,如果未能解决你的问题,请参考以下文章
使用正则表达式删除第一次出现的空白,然后用逗号替换其余的选项卡