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

Pet*_*háč 13 regex notepad++

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

例.从以下文字:

1hello
foo
2world
bar
3!
Run Code Online (Sandbox Code Playgroud)

我想提取

1hello
2world
3!
Run Code Online (Sandbox Code Playgroud)

不:

1hello

2world

3!
Run Code Online (Sandbox Code Playgroud)

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

YOU*_*YOU 23

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

Notepad ++使用scintilla,并使用其正则表达式引擎来匹配它们.

\ r和\n从不匹配,因为在Scintilla中,正则表达式搜索是每行的行(剥离行尾字符).

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

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

  • 我后来为了摆脱Windows上的空行而学到的一个聪明的技巧:用什么都不用替换\n\r.那样\ r \n\r \n变为\ r \n.任何数量的空白都会缩短为\ r \n. (4认同)

unw*_*ind 8

[^0-9]是一个正则表达式,除了数字之外几乎可以匹配任何东西.如果你说^[^0-9]你将它"锚定"到行的开头,那么在大多数正则表达式系统中.如果要包含剩下的行,请使用^[^0-9].+.


mox*_*oxn 8

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

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