Notepad ++中的正则表达式删除空行

Posted

技术标签:

【中文标题】Notepad ++中的正则表达式删除空行【英文标题】:regex in Notepad++ to remove blank lines 【发布时间】:2012-10-08 23:20:27 【问题描述】:

我有多个 html 文件,其中一些有一些空行,我需要一个正则表达式来删除所有空行并只留下一个空行。所以它会删除一个以上的空行,并留下那些只是一个或一个都没有(没有一个喜欢在其中包含文本)。

我还需要它来考虑不完全空白的行,因为某些行可能有空格或制表符(不显示的字符),所以我需要它考虑这些行,只要删除正则表达式不止一行..

【问题讨论】:

AFAIK,notepad++ 的正则表达式模式不匹配多行,这意味着您将无法将多行减少到一行。 你能发布一个你的文本文件的样本吗? 查看了 TextFX 菜单 -> TextFX 编辑 -> 删除多余的空行? @zzzzBov:最新的更新应该可以解决这个问题(不过,据我所知,您需要选择 Perl 正则表达式)。 @TimPietzcker,选择 Perl 正则表达式的选项在哪里? 【参考方案1】:

搜索

^([ \t]*)\r?\n\s+$

并替换为

\1

说明:

^         # Start of line
([ \t]*)  # Match any number of spaces or tabs, capture them in group 1
\r?\n     # Match one linebreak
\s+       # Match any following whitespace
$         # until the last possible end of line.

\1 将包含第一行空白字符,因此当您将其用作替换字符串时,只会保留第一行空白(不包括末尾的换行符)。

【讨论】:

应该的。我没有安装 Notepad++,但这是非常基本的东西。 @MartinF:想详细说明一下吗? “不起作用”到底是什么意思? 当我尝试它时没有任何反应,但现在在另一个电脑上,它可以工作! (我试图撤消反对票,但似乎需要进行编辑。也许为“\1”替换添加解释? 回到原版。它“部分有效”:一些空白行序列被简化为单个空白行,而许多只被简化为成对的空白行。随后的调用(通常在简单化约中需要)没有任何效果。有很多“\r\n\r\n\r\n”出现,您的正则表达式减少对其没有影响。用“\r\n\r\n”简单地替换“\r\n\r\n\r\n”就可以了。奇怪。 您确定在空白字符之间没有任何其他字符(例如,不可打印的 Unicode 代码点)?我想 NPP 有一个可以用来检查的十六进制编辑器?【参考方案2】:

搜索(\r?\n(\t| )*)3,,替换为\r\n\r\n,勾选“正则表达式”和“.matches newline”。

使用 Notepad++ 6.2 测试

【讨论】:

【参考方案3】:

这将替换包含空格(或不包含空格)的连续空白行,并将其替换为一个新行。

搜索 (\s*\r?\n)3,

替换为 \r\n

【讨论】:

Windows 换行符是\r\n,而不是\n\r【参考方案4】:

我测试了上述任何建议,总是被删除的太少或太多。这样要么你没有空行,其中至少有一个是预先删除的,要么没有足够的删除(留下空格等)。不幸的是,我还不能写 cmets。用 6.1.5 测试并更新到 6.2 并再次测试。根据可能有多少文件,我建议使用

Edit->Blank Operations->Trim trailing whitespace

后跟 Ctrl+A

TextFX -> TextFX Edit -> Delete surplus blank lines

我尝试录制的宏不起作用。甚至还有一个用于删除尾随空格的宏(Alt+Shift+S,请参阅设置 | 快捷方式映射器... | 宏)。有一个

Edit->Blank Operations->Remove unnecessary EOL and whitespace

但这会删除每个 EOL 并将所有内容放在一行中。

【讨论】:

谢谢.. 我正在寻找正则表达式,因为我需要在多个文件中执行该操作.. NP++ 中的所有这些建议菜单一次仅针对一个文件执行此操作,仅针对所选文本。 . 但是,我接受的第一个答案就可以了.. @Mike 你接受的那个对我不起作用,然后离开了——如果有和没有空格的混合空行——两个空行而不是一个。【参考方案5】:

这对我有用 notepad++ v6.5.1. UNICODE windows 7

搜索:^[ \t]*\r\n

替换为:什么都没有,留空

搜索方式:Regular expression.

【讨论】:

【参考方案6】:

您可以自己找到需要替换的内容 \n\n OR \n\r\n 或 \r\n\r\n 等...现在您甚至可以根据需要修改正则表达式^([ \t]*)\r?\n\s+$

【讨论】:

【参考方案7】:

我查找了^\r\n,然后在“替换为”文本框中单击“全部替换”,其中没有任何内容(空)。

【讨论】:

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

删除 Notepad++ 中的空行

使用宏删除 VB.NET 代码中的所有注释和空行的 Visual Studio 正则表达式

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

如何删除所有行包括Notepad ++中的正则表达式的'collect_host_stats'[复制]

如何使用正则表达式删除尾随空格?

如何使用正则表达式删除字符串中的括号符号