13

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

例子。从以下文字:

1hello
foo
2world
bar
3!

我想提取

1hello
2world
3!

不是:

1hello

2world

3!

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

4

5 回答 5

23

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

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

\r 和 \n 永远不会匹配,因为在 Scintilla 中,正则表达式搜索是每行进行的(去除行尾字符)。

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

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

于 2009-12-01T14:07:56.450 回答
8

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

于 2009-12-01T13:52:26.780 回答
8

^[^\d].*标记首字符不是数字的整行。检查数字前面是否真的没有空格。否则,您将不得不使用不同的表达式。

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

于 2009-12-01T13:55:07.603 回答
3

也可以使用 Notepad++ 中的书签技术。不久前,我开始受益于这个功能(很久以前,但最近才在 UI 中更加明显)。

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

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

于 2011-11-07T20:13:14.517 回答
1

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

于 2009-12-01T13:57:19.287 回答