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 ++中的正则表达式删除空行的主要内容,如果未能解决你的问题,请参考以下文章
使用宏删除 VB.NET 代码中的所有注释和空行的 Visual Studio 正则表达式