开发者

Regex: remove lines not starting with a digit

I have been fighting this problem with the help of a RegEx cheat sheet, trying to figure out how to do this, but I give up... I have this lengthy file open in Notepad++ and would like to remove all lines that do not start with a digit (0..9). I would use the Find/Replace functionality of N++. I am only mentioning this as I am not sure what Regex implementation is N++ using... Thank you

Example. From the following text:

1hello
foo
2world
bar
3!

I would like to extract

1hello
2world
3!

not:

1h开发者_JS百科ello

2world

3!

by doing a find/replace on a regular expression.


You can clear up those line with ^[^0-9].* but it will leave blank lines.

Notepad++ use scintilla, and also using its regex engine to match those.

\r and \n are never matched because in Scintilla, regular expression searches are made line per line (stripped of end-of-line chars).

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

To clear up those blank lines, only way is choose extended mode, and replace \n\n to \n, If you are in windows mode change \r\n\r\n to \r\n


[^0-9] is a regular expression that matches pretty much anything, except digits. If you say ^[^0-9] you "anchor" it to the start of the line, in most regular expression systems. If you want to include the rest of the line, use ^[^0-9].+.


^[^\d].* marks a whole line whose first character is not a digit. Check if there are really no whitespaces in front of the digits. Otherwise you'd have to use a different expression.

UPDATE: You will have to do ot in two steps. First empty the lines that do not start with a digit. Then remove the empty lines in extended mode.


One could also use the technique of bookmarking in Notepad++. I started benefiting from this feature (long time present but only more recently made somewhat more visible in the UI) not very long ago.

Simply bring up the find dialogue, type regex for lines not starting with digit ^\D.*$ and select Mark All. This will place blue circles, like marbles, in the left gutter - these are line bookmarks. Then just select from main menu Search -> Bookmark -> Remove bookmarked lines.

Bookmarks are cool, you could extract these lines by simply selecting to copy bookmarked lines, opening new document and pasting lines there. I sometimes use this technique when reviewing log files.


I'm not sure what you are asking. but the reg exp for finding the lines with a digit at the beginning would be ^\d.* you can remove all the lines that match the above or alternatly keep all the lines that match this expression: ^[^\d].*

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜