Notepad++ how to copy the text (only) which matches the regex expression (not the whole line)

4

I am looking for a simple way to copy into the clipboard all the "marks" in notepad++.

I found that I could copy the whole line that match the regex using the bookmark option. But I'm looking for a way to copy only the marked text (or the text that matches the regex expression).

The ideal would be to past the output separated by newline (or custom separator).

I looked into TxtFX option without luck. I looked into the plugin/python script lib, is there inside any of those code that could copy the marked text into the clipboard ?

In brief, is there a way to makes it -in one shot- using notepad++?

(I've seen I could do it using SynWrite -using command "Extract strings"- but using notepad++ would be better).

JinSnow

Posted 2014-10-03T15:22:53.490

Reputation: 486

As-is, your question is a little confusing, what do you mean by "Marks"? Can you provide some example data, an example result and the RegEx you've tried using? Why not just perform a RegEx Find and then Ctrl-C to copy the found, matching text? Do you know about RegEx "capture groups" for find and replace? – Ƭᴇcʜιᴇ007 – 2014-10-03T15:28:59.970

after entering my Regex '(?<=#)\w+' I'm using the "mark" tab on the ctrl+F windows in notepad++. – JinSnow – 2014-10-03T15:33:28.853

Why not just perform a RegEx Find and then Ctrl-C to copy the found, matching text? Unfortunately it doesn't work. What am I doing wrong : I enter the the regex in the find windows, then "find all in the current document" then CTRL+C? – JinSnow – 2014-10-03T15:37:19.013

Do you know about RegEx "capture groups" for find and replace? No, I'm goggling it. – JinSnow – 2014-10-03T15:40:37.790

Could you provide some sample text? I ask because I think one option may be "inverting" your regex to catch everything but what you want copied. Then you could replace the match to leave yourself with only what you want. – Excellll – 2014-10-03T15:41:13.543

I'm just retrieving hashtags (using: (?<=#)\w+) from a text that look like that (but I'm also looking for a simple way to copy-past the marks that would work for any regex). My text look like: blablala djkjd kdls, #study, international, #organization, blablala djkjd kdls, shjfdtudy, ghdf, hjfdorgan, blablala #djkjd kdls, #hgfdjf blablala #djkjd kdls, #study, hjs, #social_organization – JinSnow – 2014-10-03T15:48:22.403

your solution would be more than appreciated! I'm just surprise I could not "just" copy past the "marks" – JinSnow – 2014-10-03T15:50:29.257

Answers

2

I also couldn't find a way to select and copy every marked match. I'm a fairly novice NP++ user though, so maybe someone else knows how to do this.

However, you could instead search for everything you don't want to copy and replace it with nothing. This will leave you with only what you want, so you can copy it or use it as you like. Then just be sure to undo, save the result as a new file, or don't save at all in order to keep your original data intact.

Based on your comments, you're trying to grab hashtags from some text. You can use the following regex pattern to match everything but hashtags:

(?<!#)\b[^#]+

Replace all with nothing or a space.

Explanation of pattern:

\b[^#]+ maximally matches text, starting from a word boundary, that does not include a pound sign.
(?<!#) is a negative look-behind for the pound sign. This prevents matching any text immediately preceded by a pound sign.

This should leave nothing but hashtags behind. [^#]+ seems to be matching newline characters as well, so this will leave all your hashtags on a single line.

Excellll

Posted 2014-10-03T15:22:53.490

Reputation: 11 857

Thank you very much Excelll your trick and your great explainations! It does works perfectly! I'll let the question open to find a way that could work in all case (something like "copy all the regex results"). – JinSnow – 2014-10-04T15:21:15.503