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

时间:2009-12-01 13:51:03

标签: regex notepad++

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

实施例。从以下文字:

1hello
foo
2world
bar
3!

我想提取

1hello
2world
3!

1hello

2world

3!

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

5 个答案:

答案 0 :(得分:23)

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

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

  

\ r和\ n从不匹配,因为在   Scintilla,正则表达式搜索   每行都行(删除   行尾字符)。

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

要清除这些空白行,只能选择扩展模式,并将\ n \ n替换为\ n,如果处于Windows模式,请将\ r \ n \ r \ n更改为\ r \ n

答案 1 :(得分:8)

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

答案 2 :(得分:7)

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

<强>更新: 你必须分两步完成。首先清空不以数字开头的行。然后在扩展模式下删除空行。

答案 3 :(得分:3)

还可以在Notepad ++中使用书签技术。不久之前,我开始从这个功能中受益(很长一段时间,但最近才在UI中更加明显)。

只需调出查找对话框,为不以数字^\D.*$开头的行键入正则表达式,然后选择全部标记。这将在左侧排水沟中放置像大理石一样的蓝色圆圈 - 这些是线条书签。然后只需从主菜单中选择搜索 - &gt;书签 - &gt;删除带书签的行。

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

答案 4 :(得分:1)

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