正则表达式:删除不以数字开头的行

问题描述:

我一直在用RegEx备忘单帮助解决这个问题,试图找出如何做到这一点,但我放弃了...我有这个冗长的文件打开记事本++,并希望删除所有不以数字开头的行(0..9)。我会使用N ++的查找/替换功能。我只提到这一点,因为我不确定Regex的实现是N ++使用的...谢谢正则表达式:删除不以数字开头的行

例子。从下面的文字:

1hello 
foo 
2world 
bar 
3! 

我想提取

1hello 
2world 
3! 

不是:做一个发现

1hello 

2world 

3! 

/定期表达式替换。

+1

我已经使用这个http://*.com/a/10731750 工作像一个魅力 – 2014-09-23 08:39:13

您可以用^[^0-9].*清除那些行,但它会留下空行。

Notepad ++使用闪烁体,并使用其正则表达式引擎来匹配这些。

\ r和\ N,因为在 Scintilla的从不匹配,正则表达式搜索 由每行(剥离的 结束线字符)线。

http://www.scintilla.org/SciTERegEx.html

要清理这些空行,唯一的办法就是选择扩展模式,并取代\ n \ n转换为\ N,如果您在Windows模式改变\ r \ n \ r \ n到\ r \ n

+0

哦,好吧,我想我会满意这个解释。 – 2009-12-01 14:11:45

+4

我后来学会了摆脱Windows上空白行的巧妙把戏:用\ n \ r替换\ n。这样\ r \ n \ r \ n变成\ r \ n。任何数量的空白喜欢将缩短为\ r \ n。 – 2012-10-24 08:15:16

+0

请注意PeterPerháč的书签答案。这正是我登陆此页面时所需要的。 (我将此评论添加到接受的答案中,因为在问题第一次得到答复时,此功能可能无法在Notepad ++中使用。) – jcadcell 2013-01-23 17:54:29

[^0-9]是一个正则表达式,几乎可以匹配除数字之外的任何内容。如果您说^[^0-9],则在大多数正则表达式系统中,将它“锚定”到行首。如果您想包括该行的其余部分,请使用^[^0-9].+

+0

也工作,但留下了大量的空白行。我如何捕捉换行符? – 2009-12-01 14:01:59

+0

您是否尝试在表达式末尾添加'[\ r \ n] *'? – 2009-12-01 14:02:52

+0

看起来这只能在np ++的“扩展模式”下工作,而不能在正则表达式模式下工作。 – moxn 2009-12-01 14:04:01

^[^\d].*标记了第一个字符不是数字的整行。检查数字前面是否真的没有空格。否则,你必须使用不同的表达式。

UPDATE: 您将不得不在两个步骤中完成。首先清空不以数字开头的行。然后删除扩展模式下的空行。

+0

只要找到所有不以数字开头的行,但是当我执行搜索/替换时,搜索^ [^ \ d]。*替换为空白,我仍然留有很多空行。我如何让你的正则表达式捕获换行符? – 2009-12-01 13:58:52

+0

您可以先尝试删除所有带数字的行。然后你可以切换到“扩展模式”。我测试了它,它适用于我在这里用'\ r \ n'查找换行符。然后用nothgin替换它们。 – moxn 2009-12-01 14:06:55

+0

是的,这是一个经过时间考验的方式来做到这一点,但我希望这一切都可以一步完成。也许如果我使用其他编辑器,但它是npp,所以我会满足于这样做两个步骤:)干杯 – 2009-12-01 14:16:55

我不确定你在问什么。但用于查找带有数字开头的行的reg exp将是 ^ \ d。* 您可以删除与上述匹配的所有行,或者交替保留与此表达式匹配的所有行: ^ [^ \ d ]。*

+0

我想弄清楚我的问题哪部分不清楚。我会编辑它,但我想我很清楚在询问如何“删除不以数字开头的行”? – 2009-12-01 14:00:31

+0

我不清楚的是你如何去除。现在我明白你正在使用搜索和替换。尝试搜索 ^ [^ \ d]。*并替换为\ b(这是退格字符或备选名称*,这对我而言过去有效) 搜索^ [^ \ d]。* \ R和(R必须是大写!)

如果后者是“贪婪”的,它会删除第一次匹配后的所有行,然后您可以尝试替换^ [^ \ d] [^ \ R] * \ R woth什么也没有 – codekitty 2009-12-01 14:11:46

也可以使用记事本++中的书签技术。不久之前,我开始从这个功能中受益(长时间存在,但最近才在UI中更加明显)。

只需调出查找对话框,为不以数字^\D.*$开头的行键入正则表达式,并选择标记全部。这会将蓝色圆圈,如弹珠放置在左边的排水沟中 - 这些是线条书签。然后只需从主菜单中选择搜索 - >书签 - >删除书签行。

书签很酷,您可以通过简单地选择复制书签行,打开新文档和粘贴行来提取这些行。我在审阅日志文件时有时会使用这种技术。

+0

伟大的提示!要删除不匹配的行,还需要“删除未标记的行”。我经常可以很容易地正则表达我想要保留的东西;现在很容易删除其余的。谢谢! – jcadcell 2013-01-23 17:35:00