RegEx and Replace..
-
I’ve a file with alot of lines in them with various data, but what I’m looking to do is to grab all text containing +99(87654321) and i understand i can just use \d{11} actually but the problem is that when i do, i dont know how to replace any non-qualifying text with empties? So say the file looks like …:
123 455 61 +9901020304 blah blah 901I wish to blank everything but the column of numbers prefixed with +99
-
This might give you a solid start:
Search for
^(?-s).*?(\+\d{10}).*
and replace with\1
. -
Thank you so much, but I forgot to mention that the same document has lines in it that doesn’t have the +99 thing at all in them, and i need those gone too, what do i do then?
-
For similar tasks I adopt a two step process, first to separate the text I want from the rest by putting them on separate lines, second by selecting the (un)wanted lines.
Step 1: Replace
(\+\d{10})
with\r\n\1\r\n
.
Step 2: Mark all lines matching^\+\d{10}$
Step 3a: Either Menu => Search => Bookmarks => copy all marked lines, so they can be pasted into another buffer.
Step 3b: Or Menu => Search => Bookmarks => Remove unmarked lines. -
Just informationally, you can remove lines NOT containing a specific bit of text via finding it with the following method:
Say you want to match lines that DON’T contain
abc
. Then your search expression might be^(?-s)(?!.*abc).*\R
. If you replace with nothing when you run a replacement you effectively remove those lines.Obviously you can replace
abc
with whatever you need. It doesn’t have to be constant text, it can be a regular expression of course.