How to replace all strings to numbers contained in each string in Notepad++?

RegexNotepad++

Regex Problem Overview


I'm trying to find all values with following pattern :

value="4"
value="403"
value="200"
value="201"
value="116"
value="15"

and replace it with value inside scopes.

I'm using the following regex to find the pattern :

.*"\d+"

How can I do a replacement?

Regex Solutions


Solution 1 - Regex

In Notepad++ to replace, hit Ctrl+H to open the Replace menu.

Then if you check the "Regular expression" button and you want in your replacement to use a part of your matching pattern, you must use "capture groups" (read more on google). For example, let's say that you want to match each of the following lines

value="4"
value="403"
value="200"
value="201"
value="116"
value="15"

using the .*"\d+" pattern and want to keep only the number. You can then use a capture group in your matching pattern, using parentheses ( and ), like that: .*"(\d+)". So now in your replacement you can simply write $1, where $1 references to the value of the 1st capturing group and will return the number for each successful match. If you had two capture groups, for example (.*)="(\d+)", $1 will return the string value and $2 will return the number.

So by using:

Find: .*"(\d+)"

Replace: $1

It will return you

4
403
200
201
116
15

Please note that there many alternate and better ways of matching the aforementioned pattern. For example the pattern value="([0-9]+)" would be better, since it is more specific and you will be sure that it will match only these lines. It's even possible of making the replacement without the use of capture groups, but this is a slightly more advanced topic, so I'll leave it for now :)

Solution 2 - Regex

psxls gave a great answer but I think my Notepad++ version is slightly different so the $ (dollar sign) capturing did not work.

I have Notepad++ v.5.9.3 and here's how you can accomplish your task:

Search for the pattern: value="([0-9]*)" And replace with: \1 (whatever you want to do around that capturing group)

Ex. Surround with square brackets

[\1] --> will produce value="[4]"

Solution 3 - Regex

Replace (.*")\d+(")

With $1x$2

Where x is your "value inside scopes".

Solution 4 - Regex

I have Notepad++ v6.8.8

Find: [([a-zA-Z])]

Replace: ['\1']

Will produce: $array[XYZ] => $array['XYZ']

Solution 5 - Regex

Find: value="([\d]+|[\d])"

Replace: \1

It will really return you

4
403
200
201
116
15

js:

a='value="4"\nvalue="403"\nvalue="200"\nvalue="201"\nvalue="116"\nvalue="15"';
a = a.replace(/value="([\d]+|[\d])"/g, '$1');
console.log(a);

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionAnton SelinView Question on Stackoverflow
Solution 1 - RegexpsxlsView Answer on Stackoverflow
Solution 2 - RegexdchaykaView Answer on Stackoverflow
Solution 3 - RegexmarszeView Answer on Stackoverflow
Solution 4 - RegexJuan TapiadorView Answer on Stackoverflow
Solution 5 - Regexuser3178007View Answer on Stackoverflow