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

Regex 正则表达式:删除不以数字开头的行,regex,notepad++,Regex,Notepad++,我一直在用RegEx备忘表来解决这个问题,试图找出如何做到这一点,但我放弃了。。。我在记事本++中打开了这个冗长的文件,并希望删除所有不以数字(0..9)开头的行。我将使用N++的查找/替换功能。我只是提到这一点,因为我不确定N++使用的是什么正则表达式实现。。。多谢各位 例如。从以下案文: 1hello foo 2world bar 3! 我想提取 1hello 2world 3! 不是: 通过对正则表达式执行查找/替换。[^0-9]是一个正则表达式,它几乎可以匹配除数字以外的任何内容。在

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

例如。从以下案文:

1hello
foo
2world
bar
3!
我想提取

1hello
2world
3!
不是:


通过对正则表达式执行查找/替换。

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

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

更新
你必须分两步做ot。首先清空不以数字开头的行。然后在扩展模式下删除空行。

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

您可以使用
^[^0-9]..
清除这些行,但会留下空行

记事本++使用闪烁,也使用它的正则表达式引擎来匹配这些

\r和\n永远不匹配,因为在 闪烁,正则表达式搜索 每一条生产线都有生产线(去除 行尾字符)


要清除这些空行,唯一的方法是选择扩展模式,并将\n\n替换为\n,如果您处于windows模式,请将\r\n\r\n更改为\r\n

也可以使用记事本++中的书签技术。不久前,我就开始从这个功能中获益(很久以前就有了,但最近才在UI中变得更加明显)

只需打开“查找”对话框,为不以数字开头的行键入regex
^\D.*$
,然后选择“全部标记”。这将在左侧排水沟中放置蓝色圆圈,如大理石,这些是线书签。然后从主菜单中选择搜索->书签->删除书签行


书签很酷,您只需选择复制书签行、打开新文档并在其中粘贴行,即可提取这些行。我有时在查看日志文件时使用此技术。

这可以找到所有不以数字开头的行,但当我执行搜索/替换时,搜索^[^\d].*将其替换为空时,仍会留下大量空行。如何让你的正则表达式也捕获换行符?你可以先尝试删除所有带数字的行。然后你可以切换到“扩展模式”。我对它进行了测试,使用
\r\n
在这里查找换行符非常有效。那就什么都不要了。是的,这是一种经过时间考验的方法,但我希望这一切都能在一步之内完成。也许如果我使用其他编辑器,但这是npp,所以我可以分两步来做:)谢谢,我想知道我问题的哪一部分不清楚。我会编辑它,但我想我已经很清楚地问过如何删除不以数字开头的行了。我不清楚的是你是如何删除的。现在我知道您正在使用搜索和替换。尝试搜索^[^\d].*并替换为\b(这是退格字符或alternativley*,这在过去对我很有用)搜索^[^\d].\R并替换为nothing(R必须是大写!)

如果后者像中一样“贪婪”,它会删除第一次匹配后的所有行,然后您可以尝试替换^[^\d][^\R]*\R什么也没用,只留下了一大堆空行。如何捕获换行符?您是否尝试过在表达式末尾添加
[\r\n]*
?看起来这只在np++中的“扩展模式”下有效,但在regex-mode中无效。哦,好的,我想我会对这个解释感到满意。我后来学到了一个巧妙的技巧,可以消除Windows上的空行:用零替换\n\r。这样\r\n\r\n就变成了\r\n。任何数量的空白喜欢都将缩短为\r\n。请注意Peter Perháč的书签答案。这正是我登上这一页时所需要的。(我将此评论添加到已接受的答案中,因为当问题第一次得到回答时,记事本++中可能没有此功能。)这是一个很好的提示!对于删除不匹配的行,还有“删除未标记的行”。通常,我可以轻松地将我想要保留的内容正则化;现在很容易去掉剩下的。谢谢我用过这个,效果很好
1hello

2world

3!